{"version":3,"file":"js/126-f9d5b0decbb51e604e20.js","mappings":";sJAKA,MAAMA,EAAoB,yGAEpBC,EAAsB,CAC1BC,SAAU,oEACVC,QAAS,eAGLC,EAAsB,iEAEtBC,EAAqB,8BAErBC,EAAyB,ySAEzBC,EAAsB,sMAEtBC,EAAqB,4MAIrBC,EAAsB,wCAEtBC,EAAwB,4EAE9B,IAAIC,EAAQ,KAEZ,MAAMC,EAAe,KACnB,MAAMC,EAAUC,SAASC,cAAc,wBACvC,OAAOJ,EAAQE,GAAWA,EAAQG,OAAO,EAGrCC,EAAW,IAAMN,GAASC,IAE1BM,EAAIC,QAAQC,UAAUC,SAAWF,QAAQC,UAAUE,iBAAmBH,QAAQC,UAAUG,oBAAsBJ,QAAQC,UAAUI,mBAAqBL,QAAQC,UAAUK,kBAAoBN,QAAQC,UAAUM,sBAE7ML,EAAU,SAASM,EAASzB,GAChC,OAAIA,EAASC,QACJe,EAAEU,KAAKD,EAASzB,EAASA,YAAcgB,EAAEU,KAAKD,EAASzB,EAASC,SAEhEe,EAAEU,KAAKD,EAASzB,EAE3B,EAEM2B,EAAU,WAEVC,EAAU,CAACH,EAASI,IAAQJ,EAAQE,GAAWF,EAAQE,GAASE,QAAOC,EAEvEC,EAAU,SAASN,EAASI,EAAKG,GAIrC,OAHKP,EAAQE,KACXF,EAAQE,GAAW,CAAC,GAEfF,EAAQE,GAASE,GAAOG,CACjC,EAEMC,EAAIjC,GAAYkC,MAAMhB,UAAUiB,MAAMT,KAAKd,SAASwB,iBAAiBpC,IAErEqC,EAAoB,SAASZ,GACjC,IAAIa,GAAa,EACjB,EAAG,CACD,GAAIb,EAAQY,kBAAmB,CAC7BC,GAAa,EACb,KACF,CACAb,EAAUA,EAAQc,aACpB,OAASd,GACT,OAAOa,CACT,EAEME,EAAY,KAChB,MAAMC,EAAO7B,SAASC,cAAc,yBACpC,OAAO4B,GAAQA,EAAK3B,OAAO,EAGvB4B,EAAY,KAChB,MAAMD,EAAO7B,SAASC,cAAc,yBACpC,OAAO4B,GAAQA,EAAK3B,OAAO,EAGvB6B,EAAiBC,IACrB,MAAMC,EAAQL,IACd,GAAIK,EACF,OAAOD,EAAIE,iBAAiB,eAAgBD,EAC9C,EAGIE,EAAoB,KACxB,MAAMF,EAAQL,IACRQ,EAAQN,IACd,GAAIG,GAASG,EACX,OAAOf,EAAE,oBAAsBe,EAAQ,MAAMC,SAASC,GAASA,EAAMlB,MAAQa,GAC/E,EAGIM,EAAgB,CACpB,IAAK,MACLC,KAAM,aACNC,KAAM,YACNC,IAAK,4BACLC,KAAM,oCACNC,OAAQ,6FAGJC,EAAOC,IACXA,EAAUC,EAAeD,GACzB,IAAId,EAAMgB,EAAUF,GAAS,WAC3B,MAAMG,EAAWC,EAAgC,MAAhBlB,EAAIiB,SAAmBjB,EAAIiB,SAAWjB,EAAImB,aAAcnB,EAAIoB,kBAAkB,iBAU/G,OATqC,IAAjCC,KAAKC,MAAMtB,EAAIuB,OAAS,KACK,oBAApBT,EAAQU,SACjBV,EAAQU,QAAQP,EAAUjB,EAAIyB,WAAYzB,GAGf,oBAAlBc,EAAQY,OACjBZ,EAAQY,MAAMT,EAAUjB,EAAIyB,WAAYzB,GAGT,oBAArBc,EAAQa,SAA0Bb,EAAQa,SAAS3B,EAAKA,EAAIyB,iBAAcvC,CACzF,IACD,QAAI4B,EAAQc,aAAed,EAAQc,WAAW5B,EAAKc,MAG/Cd,EAAI6B,aAAeC,eAAeC,OAC7B/B,EAAIgC,KAAKlB,EAAQmB,WAD1B,EAEA,EAGF,IAAIlB,EAAiB,SAASD,GAiB5B,OAhBAA,EAAQoB,IAAMpB,EAAQoB,KAAOC,SAASC,KACtCtB,EAAQuB,KAAOvB,EAAQuB,KAAKC,cACP,QAAjBxB,EAAQuB,MAAkBvB,EAAQmB,OAChCnB,EAAQoB,IAAIK,QAAQ,KAAO,EAC7BzB,EAAQoB,KAAO,IAAMpB,EAAQmB,KAE7BnB,EAAQoB,KAAO,IAAMpB,EAAQmB,MAG3BnB,EAAQ0B,YAAYjC,IACxBO,EAAQ0B,SAAW,KAErB1B,EAAQ2B,OAASlC,EAAcO,EAAQ0B,UACd,MAArB1B,EAAQ0B,WACV1B,EAAQ2B,QAAU,iBAEb3B,CACT,EAEIE,EAAY,SAASF,EAAS4B,GAChC,MAAM1C,EAAM,IAAI8B,eAgBhB,OAfA9B,EAAI2C,KAAK7B,EAAQuB,KAAMvB,EAAQoB,KAAK,GACpClC,EAAIE,iBAAiB,SAAUY,EAAQ2B,QACX,kBAAjB3B,EAAQmB,MACjBjC,EAAIE,iBAAiB,eAAgB,oDAElCY,EAAQ8B,cACX5C,EAAIE,iBAAiB,mBAAoB,kBACzCH,EAAeC,IAEjBA,EAAI6C,kBAAoB/B,EAAQ+B,gBAChC7C,EAAI8C,mBAAqB,WACvB,GAAI9C,EAAI6B,aAAeC,eAAeiB,KACpC,OAAOL,EAAK1C,EAEhB,EACOA,CACT,EAEIkB,EAAkB,SAASD,EAAUoB,GACvC,GAAwB,kBAAbpB,GAAyC,kBAAToB,EACzC,GAAIA,EAAKW,MAAM,YACb,IACE/B,EAAWgC,KAAKC,MAAMjC,EACxB,CAAE,MAAOS,GAAQ,MACZ,GAAIW,EAAKW,MAAM,2BAA4B,CAChD,MAAMpC,EAAS5C,SAASmF,cAAc,UACtCvC,EAAOwC,aAAa,QAASjF,KAC7ByC,EAAOJ,KAAOS,EACdjD,SAASqF,KAAKC,YAAY1C,GAAQ2C,WAAWC,YAAY5C,EAC3D,MAAO,GAAIyB,EAAKW,MAAM,sBAAuB,CAC3C,MAAMS,EAAS,IAAIC,UACnBrB,EAAOA,EAAKsB,QAAQ,MAAO,IAC3B,IACE1C,EAAWwC,EAAOG,gBAAgB3C,EAAUoB,EAC9C,CAAE,MAAOwB,GAAS,CACpB,CAEF,OAAO5C,CACT,EAEA,MAEM6C,EAAgB,SAAS5B,GAC7B,MAAM6B,EAAe/F,SAASmF,cAAc,KAC5CY,EAAa3B,KAAOD,SAASC,KAC7B,MAAM4B,EAAYhG,SAASmF,cAAc,KACzC,IAEE,OADAa,EAAU5B,KAAOF,MACN8B,EAAUC,UAAmC,MAAvBD,EAAUC,YAAsBD,EAAUE,MAAQH,EAAaE,SAAW,KAAOF,EAAaG,OAASF,EAAUC,SAAW,KAAOD,EAAUE,KAChL,CAAE,MAAOC,GACP,OAAO,CACT,CACF,EAEA,IAAIC,GAECC,YAAaA,GAAeC,OAEN,oBAAhBD,IACTA,EAAc,SAASE,EAAOC,GAC5B,MAAMC,EAAMzG,SAAS0G,YAAY,eAEjC,OADAD,EAAIE,gBAAgBJ,EAAOC,EAAOI,QAASJ,EAAOK,WAAYL,EAAOM,QAC9DL,CACT,EACAJ,EAAY/F,UAAYgG,OAAOS,MAAMzG,YACnC8F,eAAgBA,GAAkBC,EAAY/F,WAChD+F,EAAY/F,UAAU8F,eAAiB,WACrC,MAAMY,EAASZ,EAAetF,KAAKmG,MAQnC,OAPIA,KAAKJ,aAAeI,KAAKC,kBAC3BC,OAAOC,eAAeH,KAAM,mBAAoB,CAC9C,GAAAI,GACE,OAAO,CACT,IAGGL,CACT,GAGF,MAAMM,EAAO,CAACC,EAAKC,EAAMvD,KACvB,MAAMsC,EAAQ,IAAIF,EAAYmB,EAAM,CAClCZ,SAAS,EACTC,YAAY,EACZC,OAAQ7C,IAGV,OADAsD,EAAIE,cAAclB,IACVA,EAAMW,gBAAgB,EAG1BQ,EAAiBvB,IACrBmB,EAAKnB,EAAEwB,OAAQ,yBACfxB,EAAEC,iBACFD,EAAEyB,kBACFzB,EAAE0B,0BAA0B,EAGxBC,EAAW,CAACjH,EAASzB,EAAU2I,EAAWC,IAAYnH,EAAQoH,iBAAiBF,GAAW,SAAU5B,GACxG,IAAKwB,OAAQA,GAAUxB,EACvB,KAAUwB,aAAkBtH,UAAaE,EAAQoH,EAAQvI,IACvDuI,EAASA,EAAOpC,WAEdoC,aAAkBtH,UAAuC,IAA5B2H,EAAQlH,KAAK6G,EAAQxB,KACpDA,EAAEC,iBACFD,EAAEyB,kBAEL,IAEKM,EAAU/B,GAAK7E,MAAMhB,UAAUiB,MAAMT,KAAKqF,GAE1CgC,EAAmB,CAACtH,EAASuH,KACjC,IAAIC,EAAS,CAAExH,GACXN,EAAQM,EAAS,UACnBwH,EAASH,EAAQrH,EAAQyH,WAE3B,MAAM9B,EAAS,GA2Bf,OA1BA6B,EAAOhG,SAAQ,SAAUC,GAClBA,EAAMkF,OAAQlF,EAAMiG,WAGrBhI,EAAQ+B,EAAO,0BAGf/B,EAAQ+B,EAAO,UACjB4F,EAAQ5F,EAAMQ,SAAST,SAAQ,SAAUmG,GACnCA,EAAOC,UACTjC,EAAOkC,KAAK,CACVlB,KAAMlF,EAAMkF,KACZpG,MAAOoH,EAAOpH,OAGnB,KACQkB,EAAMqG,UAAsE,IAA3D,CAAE,QAAS,WAAY,UAAWpE,QAAQjC,EAAM+B,QAC1EmC,EAAOkC,KAAK,CACVlB,KAAMlF,EAAMkF,KACZpG,MAAOkB,EAAMlB,SAGlB,IACGgH,GACF5B,EAAOkC,KAAKN,GAEP5B,EAAOoC,KAAI,SAAUxG,GAC1B,OAAIA,EAAMoF,KACD,GAAGqB,mBAAmBzG,EAAMoF,SAASqB,mBAAmBzG,EAAMhB,SAE9DgB,CAEV,IAAG0G,KAAK,IAAI,EAGTC,EAAe,CAACC,EAAM5J,IACtBmB,EAAQyI,EAAM,QACTd,EAAQc,EAAKV,UAAUW,QAAQC,GAAM3I,EAAQ2I,EAAI9J,KAEjD8I,EAAQc,EAAKxH,iBAAiBpC,IAYzC,IAAI+J,EAAc,SAAStI,EAASuI,GAClC,IAAIC,EACJ,MAAMC,EAAUzI,EAAQ0I,aAAa,gBACrC,IAAKD,EACH,OAAO,EAET,IAAIE,GAAS,EACb,GAAIlC,EAAKzG,EAAS,WAAY,CAC5B,IACE2I,EAASJ,EAAMK,QAAQH,EAASzI,EAClC,CAAE,MAAO6C,GAAQ,CACjB2F,EAAW/B,EAAKzG,EAAS,mBAAoB,CAAE2I,GACjD,CACA,OAAOA,GAAUH,CACnB,EAEA,MAAMK,EAAwB,SAASvD,GACrBc,KACJsB,UACVb,EAAevB,EAEnB,EAEMwD,EAAgBxD,IACpB,IAAItF,EACJ,GAAIsF,aAAaY,MAAO,CACtB,GAAI6C,EAAczD,GAChB,OAEFtF,EAAUsF,EAAEwB,MACd,MACE9G,EAAUsF,EAEZ,IAAI1E,EAAkBZ,GAGtB,OAAIN,EAAQM,EAASlB,GACZkK,EAAkBhJ,GAChBN,EAAQM,EAASjB,IAA0BW,EAAQM,EAASnB,GAC9DoK,EAAkBjJ,GAChBN,EAAQM,EAAStB,GACnBwK,EAAmBlJ,QADrB,CAEP,EAGImJ,EAAiB7D,IACrB,MAAMtF,EAAUsF,aAAaY,MAAQZ,EAAEwB,OAASxB,EAChD,IAAI1E,EAAkBZ,GAGtB,OAAIN,EAAQM,EAASlB,GACZsK,EAAmBpJ,GACjBN,EAAQM,EAASjB,IAA0BW,EAAQM,EAASpB,GAC9DyK,EAAmBrJ,GACjBN,EAAQM,EAAStB,GACnB4K,EAAoBtJ,QADtB,CAEP,EAGF,IAAIoJ,EAAqB,SAASpJ,GAChC,GAAIG,EAAQH,EAAS,gBACnB,OAEF,MAAMuJ,EAAcvJ,EAAQ0I,aAAa,qBAMzC,OALmB,MAAfa,IACFjJ,EAAQN,EAAS,kBAAmBA,EAAQwJ,WAC5CxJ,EAAQwJ,UAAYD,GAEtBvJ,EAAQoH,iBAAiB,QAASP,GAC3BvG,EAAQN,EAAS,gBAAgB,EAC1C,EAEIgJ,EAAoB,SAAShJ,GAC/B,MAAMyJ,EAAetJ,EAAQH,EAAS,mBAMtC,OALoB,MAAhByJ,IACFzJ,EAAQwJ,UAAYC,EACpBnJ,EAAQN,EAAS,kBAAmB,OAEtCA,EAAQ0J,oBAAoB,QAAS7C,GAC9BvG,EAAQN,EAAS,eAAgB,KAC1C,EAEIsJ,EAAsBnB,GAAQD,EAAaC,EAAMvJ,GAAqB4C,QAAQ6H,GAE9EA,EAAqB,SAASrJ,GAChC,GAAIG,EAAQH,EAAS,gBACnB,OAEF,MAAMuJ,EAAcvJ,EAAQ0I,aAAa,qBAWzC,OAVmB,MAAfa,IACE7J,EAAQM,EAAS,WACnBM,EAAQN,EAAS,kBAAmBA,EAAQwJ,WAC5CxJ,EAAQwJ,UAAYD,IAEpBjJ,EAAQN,EAAS,kBAAmBA,EAAQO,OAC5CP,EAAQO,MAAQgJ,IAGpBvJ,EAAQ0H,UAAW,EACZpH,EAAQN,EAAS,gBAAgB,EAC1C,EAEIkJ,EAAqBf,GAAQD,EAAaC,EAAMtJ,GAAoB2C,SAASxB,GAAWiJ,EAAkBjJ,KAE1GiJ,EAAoB,SAASjJ,GAC/B,MAAMyJ,EAAetJ,EAAQH,EAAS,mBAUtC,OAToB,MAAhByJ,IACE/J,EAAQM,EAAS,UACnBA,EAAQwJ,UAAYC,EAEpBzJ,EAAQO,MAAQkJ,EAElBnJ,EAAQN,EAAS,kBAAmB,OAEtCA,EAAQ0H,UAAW,EACZpH,EAAQN,EAAS,eAAgB,KAC1C,EAEI+I,EAAgB,SAASrD,GAC3B,MAAMvE,EAAMuE,EAAMO,OAASP,EAAMO,OAAO,QAAK5F,EAC7C,OAAOc,GAAOA,EAAIoB,kBAAkB,iBACtC,EAEA,MAwGMoH,EAAwB,SAASrE,GACrC,MAAMsE,EAASxD,MACR+B,KAAMA,GAAQyB,EACrB,GAAKzB,EAWL,OARIyB,EAAOjD,MACTrG,EAAQ6H,EAAM,oBAAqB,CACjCxB,KAAMiD,EAAOjD,KACbpG,MAAOqJ,EAAOrJ,QAGlBD,EAAQ6H,EAAM,4BAA6ByB,EAAOC,gBAClDvJ,EAAQ6H,EAAM,+BAAgCyB,EAAOlB,aAAa,eAC3DpI,EAAQ6H,EAAM,+BAAgCyB,EAAOlB,aAAa,cAC3E,EAEMoB,EAA4B,SAASxE,GACzC,MACMyE,GADO3D,KACQsC,aAAa,gBAAkB,OAAOjF,cACrDL,EAFOgD,KAEKsC,aAAa,eAEzBsB,GADY1E,EAAE2E,SAAW3E,EAAE4E,UACsB,QAAXH,IAAqB3G,GACxB,MAAZkC,EAAEsE,QAA+B,IAAbtE,EAAEsE,QACvBI,IAC1B1E,EAAE0B,0BAEN,EAEMmD,GAAQ,CACZ3J,EAAGA,EACHwB,KAAMA,EACN1D,oBAAqBA,EACrBS,sBAAuBA,EACvB6J,QAvQc,CAACH,EAASzI,IAAYyF,OAAOmD,QAAQH,GAwQnDnJ,SAAUA,EACVyB,UAAWA,EACXE,UAAWA,EACXC,eAAgBA,EAChB+F,SAAUA,EACVkC,eAAgBA,EAChBL,cAAeA,EACfsB,kBApjBwB,yCAqjBxB3D,KAAMA,EACNyB,aAAcA,EACdrJ,mBAAoBA,EACpBD,oBAAqBA,EACrBD,uBAAwBA,EACxBgL,sBAAuBA,EACvBjL,mBAAoBA,EACpByB,QAASA,EACT0I,sBAAuBA,EACvBtF,KArZWvD,GAAWA,EAAQuD,KAsZ9B9E,oBAAqBA,EACrBwG,cAAeA,EACf5G,kBAAmBA,EACnBS,oBAAqBA,EACrBG,aAAcA,EACdS,QAASA,EACToK,0BAA2BA,EAC3BxI,kBAAmBA,EACnBgG,iBAAkBA,EAClBhH,QAASA,EACTuG,eAAgBA,GAGZwD,IA7SyB9B,GA6Sc4B,GA7SL,SAAS7E,GAC1CgD,EAAYlC,KAAMmC,KACrB1B,EAAevB,EAEnB,GAJ+BiD,OA+S/B4B,GAAME,cAAgBA,GAEtB,MAAMC,GA9KwB/B,IAAS,SAASjD,GAC9C,MAAMiF,EAAOnE,KACP2D,EAASQ,EAAK7B,aAAa,eACjC,IAAKqB,EACH,OAEF,GAAInJ,EAAkBwF,MACpB,OAEF,MAAM7C,EAAOgF,EAAMhF,KAAKgH,GAClBC,EAAczJ,IACd0J,EAAcxJ,IACdkH,EAAOhJ,SAASmF,cAAc,QACpC,IAAIoG,EAAc,gCAAgCX,sBAC9CU,GAAeD,IAAgBvF,EAAc1B,KAC/CmH,GAAe,gBAAgBD,aAAuBD,uBAExDE,GAAe,0BACfvC,EAAK4B,OAAS,OACd5B,EAAKwC,OAASpH,EACd4E,EAAKrB,OAASyD,EAAKzD,OACnBqB,EAAKqB,UAAYkB,EACjBvC,EAAKyC,MAAMC,QAAU,OACrB1L,SAAS2L,KAAKrG,YAAY0D,GAC1BA,EAAK/I,cAAc,mBAAmB2L,QACtClE,EAAevB,EACjB,EAoJqB0F,CAAsBb,IAE3CA,GAAMG,aAAeA,GAErB,MAAMW,GAjJwB1C,IAAS,SAASjD,GAC9C,IAAIlC,EAAM2G,EAAQ1G,EAClB,MAAMrD,EAAUoG,KAChB,IARe,SAASpG,GACxB,MAAMO,EAAQP,EAAQ0I,aAAa,eACnC,OAAgB,MAATnI,GAA2B,UAAVA,CAC1B,CAKO2K,CAASlL,GACZ,OAAO,EAET,IAAKyG,EAAKzG,EAAS,eAEjB,OADAyG,EAAKzG,EAAS,iBACP,EAET,GAAIY,EAAkBZ,GAEpB,OADAyG,EAAKzG,EAAS,iBACP,EAET,MAAMgE,EAAkBhE,EAAQ0I,aAAa,yBACvC/E,EAAW3D,EAAQ0I,aAAa,cAAgB,SACtD,GAAIhJ,EAAQM,EAAStB,GAAqB,CACxC,MAAMkL,EAASzJ,EAAQH,EAAS,qBAChC+J,EAAS5J,EAAQH,EAAS,iCAAmCA,EAAQ0I,aAAa,WAAa,MAC/FrF,EAAMlD,EAAQH,EAAS,iCAAmCA,EAAQ0I,aAAa,WAAapF,SAASC,KACxE,QAAzBwG,EAAOtG,gBACTJ,EAAMA,EAAIyB,QAAQ,QAAS,KAEL,wBAApB9E,EAAQmL,SACV/H,EAAO,IAAIgI,SAASpL,GACN,MAAV4J,GACFxG,EAAKiI,OAAOzB,EAAOjD,KAAMiD,EAAOrJ,QAGlC6C,EAAOkE,EAAiBtH,EAAS4J,GAEnCtJ,EAAQN,EAAS,oBAAqB,MACtCM,EAAQN,EAAS,+BAAgC,MACjDM,EAAQN,EAAS,+BAAgC,KACnD,MAAWN,EAAQM,EAAS1B,IAAwBoB,EAAQM,EAASvB,IACnEsL,EAAS/J,EAAQ0I,aAAa,eAC9BrF,EAAMrD,EAAQ0I,aAAa,YAC3BtF,EAAOkE,EAAiBtH,EAASA,EAAQ0I,aAAa,kBAEtDqB,EAAS/J,EAAQ0I,aAAa,eAC9BrF,EAAMkF,EAAMhF,KAAKvD,GACjBoD,EAAOpD,EAAQ0I,aAAa,gBAE9B1G,EAAK,CACHwB,KAAMuG,GAAU,MAChB1G,IAAKA,EACLD,KAAMA,EACNO,SAAUA,EACV,UAAAZ,CAAW5B,EAAKc,GACd,OAAIwE,EAAKzG,EAAS,kBAAmB,CAAEmB,EAAKc,IACnCwE,EAAKzG,EAAS,YAAa,CAAEmB,KAEpCsF,EAAKzG,EAAS,iBACP,EAEX,EACA,OAAA2C,IAAW2I,GACT,OAAO7E,EAAKzG,EAAS,eAAgBsL,EACvC,EACA,KAAAzI,IAASyI,GACP,OAAO7E,EAAKzG,EAAS,aAAcsL,EACrC,EACA,QAAAxI,IAAYwI,GACV,OAAO7E,EAAKzG,EAAS,gBAAiBsL,EACxC,EACAvH,YAAakB,EAAc5B,GAC3BW,gBAAoC,MAAnBA,GAA+C,UAApBA,IAE9C6C,EAAevB,EACjB,EA4EqBiG,CAAsBpB,IAE3CA,GAAMc,aAAeA,GAqDrB,GAFAd,GAAMqB,MAjDQ,WACZ,GAAI/F,OAAOgG,cACT,MAAM,IAAIC,MAAM,sCA4ClB,OA1CAjG,OAAO2B,iBAAiB,YAAY,WAClC5G,EAAE3B,GAAoB2C,SAAQ,SAAU6G,GAClClI,EAAQkI,EAAI,iBACdS,EAAcT,EAEjB,IACD7H,EAAE1B,GAAqB0C,SAAQ,SAAU6G,GACnClI,EAAQkI,EAAI,iBACdS,EAAcT,EAEjB,GACF,IACDpB,EAAS9H,SAAUL,EAAqB,gBAAiBgK,GACzD7B,EAAS9H,SAAUL,EAAqB,eAAgBgK,GACxD7B,EAAS9H,SAAUJ,EAAuB,gBAAiB+J,GAC3D7B,EAAS9H,SAAUJ,EAAuB,eAAgB+J,GAC1D7B,EAAS9H,SAAUd,EAAmB,QAASyL,GAC/C7C,EAAS9H,SAAUd,EAAmB,QAASwK,GAC/C5B,EAAS9H,SAAUd,EAAmB,QAASgM,IAC/CpD,EAAS9H,SAAUd,EAAmB,QAAS8K,GAC/ClC,EAAS9H,SAAUd,EAAmB,QAAS4M,IAC/ChE,EAAS9H,SAAUd,EAAmB,QAASiM,IAC/CrD,EAAS9H,SAAUb,EAAqB,QAASwL,GACjD7C,EAAS9H,SAAUb,EAAqB,QAASuK,GACjD5B,EAAS9H,SAAUb,EAAqB,QAAS+L,IACjDpD,EAAS9H,SAAUb,EAAqB,QAAS6K,GACjDlC,EAAS9H,SAAUb,EAAqB,QAAS2M,IACjDhE,EAAS9H,SAAUV,EAAqB,SAAUoK,GAClD5B,EAAS9H,SAAUV,EAAqB,SAAU4L,IAClDpD,EAAS9H,SAAUV,EAAqB,SAAUwM,IAClDhE,EAAS9H,SAAUT,EAAoB,SAAUmK,GACjD5B,EAAS9H,SAAUT,EAAoB,SAAU2L,IACjDpD,EAAS9H,SAAUT,EAAoB,SAAUuM,IACjDhE,EAAS9H,SAAUT,EAAoB,UAAW4G,GAAKqG,YAAW,IAAOxC,EAAe7D,IAAK,MAC7F2B,EAAS9H,SAAUT,EAAoB,YAAayK,GACpDlC,EAAS9H,SAAUT,EAAoB,gBAAiBoK,GACxD7B,EAAS9H,SAAUR,EAAwB,QAASmL,GACpD7C,EAAS9H,SAAUR,EAAwB,QAASkK,GACpD5B,EAAS9H,SAAUR,EAAwB,QAAS0L,IACpDpD,EAAS9H,SAAUR,EAAwB,QAASgL,GACpDxK,SAASiI,iBAAiB,mBAAoB9F,GAC9CnC,SAASiI,iBAAiB,mBAAoBnI,GACvCwG,OAAOgG,eAAgB,CAChC,EAIsB,qBAAXG,GAA0BA,GAAUA,EAAO5J,KAAM,CAC1D,GAAI4J,EAAOrD,MACT,MAAM,IAAImD,MAAM,kEAElBE,EAAOrD,MAAQ4B,GACfyB,EAAOC,eAAc,SAAU5J,EAAS6J,EAAiB3K,GACvD,IAAKc,EAAQ8B,YACX,OAAO7C,EAAeC,EAEzB,GACH,wBC3qBA,WAaA,SAAW4K,GACT,aAGE,EAAO,CAAC,QAAU,cAA+B,2BAAP,EAQ3C,SAAUvL,GAGX,IAAIwL,EAAcxL,EAAEyL,QAAQC,WAAWzM,UAAUwC,QAAQkK,IAIzD3L,EAAE4L,OAAO,qBAAsB5L,EAAEyL,QAAQC,WAAY,CACnDjK,QAAS,CAEPoK,aAAc,GAQdF,IAAK,SAAU7G,EAAGlC,GAChB,IAAIkJ,EAAQ9L,EAAE4F,MACdhD,EAAKmJ,SAAQ,WACX,OAAOD,EAAMJ,WAAW,UAAW9I,EACrC,IACA4I,EAAY/L,KAAKmG,KAAMd,EAAGlC,EAC5B,GAGFoJ,eAAgB,CAQhB,EAEAC,aAAc,SAAUrJ,EAAMsJ,GAC5B,IAAIC,EAAOvG,KAGTwG,EADMpM,EAAEqM,WAAWC,YAAYH,EAAM,CAACvJ,IAC1B2J,UAyBd,OAxBA3G,KAAK4G,SAAS,UAAW,KAAM5J,GAC/B5C,EAAEyM,KAAK7J,EAAKiJ,cAAc,SAAUa,EAAGC,GACrC,IAAIC,EAAO,SAAUhK,GACnB,OAAIsJ,EAAaW,YAER7M,EAAEqM,WAAWS,WAAWX,EAAM,CAACD,IAAeK,UAEhDJ,EAAKH,eAAeW,EAASxC,QAAQ1K,KAC1C0M,EACAvJ,EACA+J,EAEJ,EACAP,EAAQA,EAAMD,EAAKY,cAAcH,EAAMD,EAASK,QAAUJ,EAC5D,IACAR,EACG/I,MAAK,WACJ8I,EAAKK,SAAS,cAAe,KAAM5J,GACnCuJ,EAAKK,SAAS,gBAAiB,KAAM5J,EACvC,IACCqK,MAAK,WACJd,EAAKK,SAAS,cAAe,KAAM5J,GACnCuJ,EAAKK,SAAS,gBAAiB,KAAM5J,EACvC,IACKwJ,CACT,EAMAc,uBAAwB,SAAUzL,GAChC,IAAIoK,EAAe,GACnB7L,EAAEyM,KAAKhL,EAAQoK,cAAc,WAC3B,IAAIc,EAAW,CAAC,EACdxC,EAASvE,KAAKuE,OACdgD,GAAyB,IAAhBvH,KAAKuH,OAAkBhD,EAASvE,KAAKuH,OAChDnN,EAAEyM,KAAK7G,MAAM,SAAUhG,EAAKG,GACJ,WAAlBC,EAAEgD,KAAKjD,IAA2C,MAApBA,EAAMqN,OAAO,GAC7CT,EAAS/M,GACP6B,EACE1B,EAAMG,MAAM,KACTiN,EACGA,EAASvN,EAAIwN,OAAO,GAAGnK,cAAgBrD,EAAIM,MAAM,GACjDN,IAGV+M,EAAS/M,GAAOG,CAEpB,IACA8L,EAAaxE,KAAKsF,EACpB,IACAlL,EAAQoK,aAAeA,CACzB,EAGAwB,WAAY,WACV,OAAOzH,KAAK0H,WACd,EAIAvB,QAAS,SAAUnJ,GACjB,IAAIuJ,EAAOvG,KACTnE,EAAUzB,EAAEuN,OAAO,CAAC,EAAG3H,KAAKnE,QAASmB,GA4BvC,OA3BInB,EAAQoK,cAAgBpK,EAAQoK,aAAa2B,SAC/C5H,KAAKsH,uBAAuBzL,GACH,IAArBmE,KAAK0H,aACP1H,KAAK4G,SAAS,gBAEhBxM,EAAEyM,KAAK7J,EAAK6K,OAAO,SAAUC,GAC3B,IAAIC,EAAOD,EAAQ1N,EAAEuN,OAAO,CAAC,EAAG9L,GAAWA,EACzCmL,EAAO,WACL,OAAIhK,EAAKiK,YAEA7M,EAAEqM,WAAWS,WAAWX,EAAM,CAACvJ,IAAO2J,UAExCJ,EAAKF,aAAa0B,EAAM/K,EACjC,EACF+K,EAAKD,MAAQA,EACbvB,EAAKmB,aAAe,EACpBnB,EAAKyB,iBAAmBzB,EAAKyB,iBAAiBzB,EAAKY,cACjDH,EACAA,GACAI,QAAO,WACPb,EAAKmB,aAAe,EACK,IAArBnB,EAAKmB,aACPnB,EAAKK,SAAS,cAElB,GACF,KAEK5G,KAAKgI,gBACd,EAEAC,QAAS,WACPjI,KAAKkI,SACLlI,KAAK0H,YAAc,EAEnB1H,KAAKgI,iBAAmB5N,EAAEqM,WAAWC,YAAY1G,MAAM2G,SACzD,GAEJ,GAxJqD,8BAQpD,CAZD,yBCbA,WAaA,SAAWhB,GACT,aAGE,EAAO,CAAC,QAAU,cAAuC,2BAAP,EAQnD,SAAUvL,GAIXA,EAAEyL,QAAQC,WAAWzM,UAAUwC,QAAQoK,aAAaxE,KAAK,CACvD8C,OAAQ,WAGR6C,QAAQ,EAERe,gBAAiB,IACjBC,YAAa,IACbC,YAAa,IACbC,iBAAkB,IAClBhH,SAAU,uBAKZlH,EAAE4L,OAAO,qBAAsB5L,EAAEyL,QAAQC,WAAY,CACnDjK,QAAS,CAeP0M,iBAAkBnO,EAAEoO,KAGpBC,SAAU,CACRH,iBAAkB,mCAClBH,gBAAiB,wBACjBC,YAAa,oBACbC,YAAa,sBAIjBjC,eAAgB,CACdsC,SAAU,SAAU1L,EAAMnB,GACxB,GAAIA,EAAQyF,SACV,OAAOtE,EAGT,IAGE2L,EAHEC,EAAMxO,EAAEqM,WACVM,EAAW/G,KAAKnE,QAChBgN,EAAO7L,EAAK6K,MAAM7K,EAAK8K,OAmCzB,OAjCIjM,EAAQwM,aAAexM,EAAQuM,eACjCO,EAAWE,EAAKC,MAGqB,WAArC1O,EAAEgD,KAAKvB,EAAQyM,oBACdvB,EAASwB,oBAAsB,GAAKvL,EAAK6K,MAAMD,OAC9C/L,EAAQyM,iBAEVO,EAAKpM,MAAQsK,EAASgC,KAAK,qBAE3BlN,EAAQsM,iBAENtM,EAAQsM,gBAAgBa,KAAKH,EAAKzL,OAClCvB,EAAQsM,gBAAgBa,KAAKH,EAAKtI,MAI3BoI,EAAW9M,EAAQuM,YAC5BS,EAAKpM,MAAQsK,EAASgC,KAAK,eAEN,WAArB3O,EAAEgD,KAAKuL,IACPA,EAAW9M,EAAQwM,YAEnBQ,EAAKpM,MAAQsK,EAASgC,KAAK,sBAEpBF,EAAKpM,MATZoM,EAAKpM,MAAQsK,EAASgC,KAAK,mBAWzBF,EAAKpM,OAASO,EAAK6K,MAAMpL,OAC3BO,EAAK6K,MAAMpL,OAAQ,EACnBmM,EAAI1B,WAAWlH,KAAM,CAAChD,KAEtB4L,EAAIlC,YAAY1G,KAAM,CAAChD,IAElB4L,EAAIjC,SACb,IAGN,GArG6D,8BAQ5D,CAZD,yBCbA,WAcA,SAAWhB,GACT,aAGE,EAAO,CAAC,QAAU,SAAwB,EAQ3C,SAAUvL,GAsCX,SAAS6O,EAAe7L,GACtB,IAAI8L,EAAsB,aAAT9L,EACjB,OAAO,SAAU8B,GACfA,EAAEiK,aAAejK,EAAEkK,eAAiBlK,EAAEkK,cAAcD,aACpD,IAAIA,EAAejK,EAAEiK,aAEnBA,IAC4C,IAA5C/O,EAAEiP,QAAQ,QAASF,EAAaG,SAC8B,IAA9DtJ,KAAK4G,SAASxJ,EAAMhD,EAAE0F,MAAM1C,EAAM,CAAEmM,eAAgBrK,OAEpDA,EAAEC,iBACE+J,IACFC,EAAaK,WAAa,QAGhC,CACF,CAjDApP,EAAEqP,QAAQC,YACR,IAAIC,OAEF,uJAIAX,KAAK3J,OAAOuK,UAAUC,YAExBzP,EAAE,wBAAwB0P,KAAK,aAQjC1P,EAAEqP,QAAQM,iBAAmB1K,OAAO2K,gBAAiB3K,OAAO4K,YAC5D7P,EAAEqP,QAAQS,wBAA0B7K,OAAO2F,SAG3C5K,EAAEqP,QAAQU,UACR9K,OAAO+K,OACNA,KAAK/Q,UAAUiB,OACd8P,KAAK/Q,UAAUgR,aACfD,KAAK/Q,UAAUiR,UAkCnBlQ,EAAE4L,OAAO,qBAAsB,CAC7BnK,QAAS,CAGP0O,SAAUnQ,EAAErB,UAGZyR,eAAWvQ,EAKXyP,eAAWzP,EAKXwQ,kBAAkB,EAKlBC,eAAWzQ,EAIX0Q,mBAAmB,EAGnBC,2BAAuB3Q,EAIvB4Q,8BAA0B5Q,EAI1B6Q,iCAAkC,IAGlCC,mBAAmB,EAGnBC,4BAAwB/Q,EAExBgR,sBAAsB,EAGtBC,cAAUjR,EAGVkR,uBAAmBlR,EAGnBmR,iBAAanR,EAIboR,WAAW,EAKXC,kBAAcrR,EAMdsR,mBAAetR,EAIfuR,qBAAqB,EAErBC,iBAAkB,IAElBC,gBAAiB,IAEjBC,YAAY,EASZC,qBAAiB3R,EAGjBwO,SAAU,CACR8C,cAAe,mCAKjBxC,KAAM,SAAU1G,EAASwJ,GASvB,OAPAxJ,EAAUrC,KAAKyI,SAASpG,IAAYA,EAAQyJ,WACxCD,GACFzR,EAAEyM,KAAKgF,GAAS,SAAU7R,EAAKG,GAE7BkI,EAAUA,EAAQ3D,QAAQ,IAAM1E,EAAM,IAAKG,EAC7C,IAEKkI,CACT,EAOA0J,SAAU,SAAUhK,GAClB,OAAOA,EAAKiK,gBACd,EAkBAjG,IAAK,SAAU7G,EAAGlC,GAChB,GAAIkC,EAAE+M,qBACJ,OAAO,GAGPjP,EAAK2O,aACgB,IAApB3O,EAAK2O,YACJvR,EAAE4F,MAAM8F,WAAW,SAAU,gBAE/B9I,EAAKmJ,UAAU1I,MAAK,WAClBT,EAAKkP,QACP,GAEJ,EA4DAC,aAAa,EACbC,aAAa,EACbC,OAAO,EACPC,QAAS,GAQXnF,cACMoF,EAAQnS,EAAEoS,GAAGC,OAAOC,MAAM,KACvBC,OAAOJ,EAAM,IAAM,GAAKI,OAAOJ,EAAM,IAAM,EAAI,OAAS,QAKjEK,gBAAiB,CACf,YACA,WACA,YACA,YACA,wBAGFC,WACEzS,EAAEqP,QAAQU,WACV,WAEE,OADYnK,KAAK1F,OAAS0F,KAAKqK,aAAerK,KAAKsK,UACtCwC,MAAM9M,KAAM+M,UAC3B,EAEFC,cAAe,WACbhN,KAAKiN,UAAYC,KAAKC,IAAMD,KAAKC,OAAQ,IAAID,MAAOE,UACpDpN,KAAKqN,OAAS,EACdrN,KAAKsN,QAAU,EACftN,KAAKuN,WAAa,SAAUJ,EAAKE,EAAQG,GACvC,IAAIC,EAAWN,EAAMnN,KAAKiN,UAM1B,QALKjN,KAAKsN,UAAYE,GAAYC,EAAWD,KAC3CxN,KAAKsN,SAAWD,EAASrN,KAAKqN,SAAW,IAAOI,GAAY,EAC5DzN,KAAKqN,OAASA,EACdrN,KAAKiN,UAAYE,GAEZnN,KAAKsN,OACd,CACF,EAEAI,aAAc,SAAU7R,GACtB,OACGA,EAAQoP,wBACNpP,EAAQwP,WAAajR,EAAEqP,QAAQM,eAChC3P,EAAEqP,QAAQS,sBAEhB,EAEAyD,aAAc,SAAU9R,GACtB,IAAIkQ,EACJ,MAAiC,aAA7B3R,EAAEgD,KAAKvB,EAAQkQ,UACVlQ,EAAQkQ,SAASlQ,EAAQkG,MAE9B3H,EAAEwT,QAAQ/R,EAAQkQ,UACblQ,EAAQkQ,SAEgB,WAA7B3R,EAAEgD,KAAKvB,EAAQkQ,WACjBA,EAAW,GACX3R,EAAEyM,KAAKhL,EAAQkQ,UAAU,SAAUxL,EAAMpG,GACvC4R,EAAStK,KAAK,CAAElB,KAAMA,EAAMpG,MAAOA,GACrC,IACO4R,GAEF,EACT,EAEA8B,UAAW,SAAUhG,GACnB,IAAIiG,EAAQ,EAIZ,OAHA1T,EAAEyM,KAAKgB,GAAO,SAAUC,EAAOe,GAC7BiF,GAASjF,EAAKC,MAAQ,CACxB,IACOgF,CACT,EAEAC,oBAAqB,SAAUzN,GAC7B,IAAI0N,EAAW,CACbX,OAAQ,EACRS,MAAO,EACPR,QAAS,GAEPhN,EAAI2N,UACN7T,EAAEuN,OAAOrH,EAAI2N,UAAWD,GAExB1N,EAAI2N,UAAYD,CAEpB,EAEAE,oBAAqB,SAAU5N,GAC7B,IAAIwJ,EACJ,GAAIxJ,EAAI6N,UACN,IAAKrE,KAAQxJ,EAAI6N,UACXjO,OAAO7G,UAAU+U,eAAevU,KAAKyG,EAAI6N,UAAWrE,WAC/CxJ,EAAI6N,UAAUrE,QAIzBxJ,EAAI6N,UAAY,CAAC,CAErB,EAEAE,YAAa,SAAUnP,EAAGlC,GACxB,GAAIkC,EAAEoP,iBAAkB,CACtB,IACEjB,EADEF,EAAMD,KAAKC,IAAMD,KAAKC,OAAQ,IAAID,MAAOE,UAE7C,GACEpQ,EAAKuR,OACLvR,EAAKyO,kBACL0B,EAAMnQ,EAAKuR,MAAQvR,EAAKyO,kBACxBvM,EAAEmO,SAAWnO,EAAE4O,MAEf,OAEF9Q,EAAKuR,MAAQpB,EACbE,EACEjR,KAAKC,MACF6C,EAAEmO,OAASnO,EAAE4O,OAAU9Q,EAAKwR,WAAaxR,EAAKiR,UAAUH,SACtD9Q,EAAKuO,eAAiB,GAG7BvL,KAAKiO,UAAUZ,QAAUA,EAASrQ,EAAKiR,UAAUZ,OACjDrN,KAAKiO,UAAUX,QAAUtN,KAAKyO,cAAclB,WAC1CJ,EACAnN,KAAKiO,UAAUZ,OACfrQ,EAAK0O,iBAEP1O,EAAKiR,UAAUZ,OAASrQ,EAAKqQ,OAASA,EACtCrQ,EAAKiR,UAAUX,QAAUtQ,EAAKsQ,QAAUtQ,EAAKyR,cAAclB,WACzDJ,EACAE,EACArQ,EAAK0O,iBAKP1L,KAAK4G,SACH,WACAxM,EAAE0F,MAAM,WAAY,CAAEyJ,eAAgBrK,IACtClC,GAIFgD,KAAK4G,SACH,cACAxM,EAAE0F,MAAM,cAAe,CAAEyJ,eAAgBrK,IACzCc,KAAKiO,UAET,CACF,EAEAS,sBAAuB,SAAU7S,GAC/B,IAAI0K,EAAOvG,KACTjF,EAAMc,EAAQd,IAAMc,EAAQd,MAAQX,EAAEuU,aAAa5T,MAGjDA,EAAI6T,SACNxU,EAAEW,EAAI6T,QAAQC,GAAG,YAAY,SAAU3P,GACrC,IAAI4P,EAAK5P,EAAEkK,cAEXlK,EAAEoP,iBAAmBQ,EAAGR,iBACxBpP,EAAEmO,OAASyB,EAAGzB,OACdnO,EAAE4O,MAAQgB,EAAGhB,MACbvH,EAAK8H,YAAYnP,EAAGrD,EACtB,IACAA,EAAQd,IAAM,WACZ,OAAOA,CACT,EAEJ,EAEAgU,wBAAyB,SAAUlT,GACjC,IAAId,EAAMc,EAAQd,IAAMc,EAAQd,MAAQX,EAAEuU,aAAa5T,MACnDA,EAAI6T,QACNxU,EAAEW,EAAI6T,QAAQI,IAAI,WAEtB,EAEAC,cAAe,SAAU7R,EAAMkD,GAE7B,OAAOJ,OAAO7G,UAAUyS,SAASjS,KAAKyG,KAAS,WAAalD,EAAO,GACrE,EAEA8R,mBAAoB,SAAU3O,EAAMoB,GAGlC,OAAIA,EADJpB,EAAO4O,OAAO5O,KAGZA,EAAOA,EAAK7B,QACV,gCACA,SAAU0Q,EAAGC,EAAIC,GAGf,MAAO,MAFKD,EAAK1C,OAAO0C,GAAM,EAAI,GAEZ,KADZC,GAAM,GAElB,IAEKtP,KAAKkP,mBAAmB3O,EAAMoB,KAEvCA,EAAIpB,IAAQ,EACLA,EACT,EAEAgP,aAAc,SAAU1T,GACtB,IACEkQ,EADExF,EAAOvG,KAET6I,EAAOhN,EAAQgM,MAAM,GAErBwD,EAAYxP,EAAQwP,YAAcjR,EAAEqP,QAAQM,cAC5CW,EACgC,UAA9BtQ,EAAEgD,KAAKvB,EAAQ6O,WACX7O,EAAQ6O,UAAU,GAClB7O,EAAQ6O,UAChB7O,EAAQ2T,QAAUpV,EAAEuN,OAAO,CAAC,EAAG9L,EAAQ2T,SACnC3T,EAAQ4T,eACV5T,EAAQ2T,QAAQ,iBAAmB3T,EAAQ4T,cAExCpE,IAAaxP,EAAQ6T,MAAS1P,KAAKiP,cAAc,OAAQpG,KAC5DhN,EAAQ2T,QAAQ,uBACd,yBACAG,UAAU9G,EAAK+G,YAAc/G,EAAKtI,MAClC,KAEC8K,EAGMjR,EAAEqP,QAAQS,wBACfrO,EAAQuP,aAKVW,EAAW/L,KAAK2N,aAAa9R,GACzBA,EAAQ6T,KACV3D,EAAStK,KAAK,CACZlB,KAAMmK,EACNvQ,MAAO0B,EAAQ6T,OAGjBtV,EAAEyM,KAAKhL,EAAQgM,OAAO,SAAUC,EAAOe,GACrCkD,EAAStK,KAAK,CACZlB,KACiC,UAA9BnG,EAAEgD,KAAKvB,EAAQ6O,YACd7O,EAAQ6O,UAAU5C,IACpB4C,EACFvQ,MAAO0O,GAEX,MAGEtC,EAAK0I,cAAc,WAAYpT,EAAQkQ,UACzCA,EAAWlQ,EAAQkQ,UAEnBA,EAAW,IAAI/G,SACf5K,EAAEyM,KAAK7G,KAAK2N,aAAa9R,IAAU,SAAUiM,EAAO+H,GAClD9D,EAAS9G,OAAO4K,EAAMtP,KAAMsP,EAAM1V,MACpC,KAEE0B,EAAQ6T,KACV3D,EAAS9G,OACPyF,EACA7O,EAAQ6T,KACR7G,EAAK+G,YAAc/G,EAAKtI,MAG1BnG,EAAEyM,KAAKhL,EAAQgM,OAAO,SAAUC,EAAOe,GAGrC,GACEtC,EAAK0I,cAAc,OAAQpG,IAC3BtC,EAAK0I,cAAc,OAAQpG,GAC3B,CACA,IAAIiH,EAAWjH,EAAK+G,YAAc/G,EAAKtI,KACnC1E,EAAQ+P,kBACVkE,EAAWvJ,EAAK2I,mBACdY,EACAjU,EAAQ+P,kBAGZG,EAAS9G,OACwB,UAA9B7K,EAAEgD,KAAKvB,EAAQ6O,YACd7O,EAAQ6O,UAAU5C,IAClB4C,EACF7B,EACAiH,EAEJ,CACF,KAGJjU,EAAQmB,KAAO+O,IAlEflQ,EAAQuQ,YAAcvD,EAAKzL,MAAQ,2BACnCvB,EAAQmB,KAAOnB,EAAQ6T,MAAQ7G,GAoEjChN,EAAQ6T,KAAO,IACjB,EAEAK,oBAAqB,SAAUlU,GAC7B,IAAImU,EAAa5V,EAAE,WAAW0P,KAAK,OAAQjO,EAAQoB,KAAK6M,KAAK,QAE7DjO,EAAQ0B,SAAW,WAAa1B,EAAQ0B,UAAY,IAEpD1B,EAAQkQ,SAAW/L,KAAK2N,aAAa9R,GAEjCA,EAAQqP,UAAY8E,GAAcA,IAAe9S,SAAS+B,MAC5DpD,EAAQkQ,SAAStK,KAAK,CACpBlB,KAAM1E,EAAQsP,mBAAqB,WACnChR,MAAO0B,EAAQqP,UAGrB,EAEA+E,kBAAmB,SAAUpU,GACvBmE,KAAK0N,aAAa7R,IACfmE,KAAKkQ,eAAerU,GAAS,KAC3BA,EAAQmB,MACXgD,KAAKuP,aAAa1T,GAEpBmE,KAAK0O,sBAAsB7S,IAEzBA,EAAQuP,cAGVvP,EAAQ0B,SAAW,gBAAkB1B,EAAQ0B,UAAY,MAG3DyC,KAAK+P,oBAAoBlU,EAE7B,EAEAsU,cAAe,SAAUtU,GACvB,IAAI6N,EAAYtP,EAAEyB,EAAQ6N,WACxBgB,EAAY7O,EAAQ6O,UAkBtB,OAjBKA,EAcOtQ,EAAEwT,QAAQlD,KACpBA,EAAY,CAACA,KAdbA,EAAY,GACZhB,EAAU7C,MAAK,WAIb,IAHA,IAAIxL,EAAQjB,EAAE4F,MACZO,EAAOlF,EAAMyO,KAAK,SAAW,UAC7BhD,GAAKzL,EAAMyO,KAAK,UAAY,CAAC,IAAIlC,OAC5Bd,GACL4D,EAAUjJ,KAAKlB,GACfuG,GAAK,CAET,IACK4D,EAAU9C,SACb8C,EAAY,CAAChB,EAAUI,KAAK,SAAW,aAKpCY,CACT,EAEA0F,kBAAmB,SAAUvU,GAGtBA,EAAQkG,MAASlG,EAAQkG,KAAK6F,SACjC/L,EAAQkG,KAAO3H,EAAEyB,EAAQ6N,UAAUI,KAAK,SAGnCjO,EAAQkG,KAAK6F,SAChB/L,EAAQkG,KAAO3H,EAAE4F,KAAKnE,QAAQ6N,UAAUI,KAAK,WAGjDjO,EAAQ6O,UAAY1K,KAAKmQ,cAActU,GAClCA,EAAQoB,MACXpB,EAAQoB,IAAMpB,EAAQkG,KAAK+H,KAAK,WAAa5M,SAASC,MAGxDtB,EAAQuB,MACNvB,EAAQuB,MACiC,WAAxChD,EAAEgD,KAAKvB,EAAQkG,KAAK+H,KAAK,YACxBjO,EAAQkG,KAAK+H,KAAK,WACpB,IACAzM,cAEiB,SAAjBxB,EAAQuB,MACS,QAAjBvB,EAAQuB,MACS,UAAjBvB,EAAQuB,OAERvB,EAAQuB,KAAO,QAEZvB,EAAQwU,oBACXxU,EAAQwU,kBAAoBxU,EAAQkG,KAAKuO,KAAK,kBAElD,EAEAC,iBAAkB,SAAUvT,GAC1B,IAAInB,EAAUzB,EAAEuN,OAAO,CAAC,EAAG3H,KAAKnE,QAASmB,GAGzC,OAFAgD,KAAKoQ,kBAAkBvU,GACvBmE,KAAKiQ,kBAAkBpU,GAChBA,CACT,EAIA2U,kBAAmB,SAAUC,GAC3B,OAAIA,EAASC,MACJD,EAASC,QAEdD,EAASE,aACJ,WAELF,EAASG,aACJ,WAEF,SACT,EAIAC,gBAAiB,SAAUlK,GAIzB,OAHAA,EAAQpK,QAAUoK,EAAQlJ,KAC1BkJ,EAAQlK,MAAQkK,EAAQU,KACxBV,EAAQjK,SAAWiK,EAAQS,OACpBT,CACT,EAIAmK,eAAgB,SAAUC,EAAiBlF,EAAS3G,GAClD,IAAI0D,EAAMxO,EAAEqM,WACVE,EAAUiC,EAAIjC,UAShB,OAPAkF,EAAUA,GAAW7L,KAAKnE,QAAQgQ,SAAWlF,GACrB,IAApBoK,EACFnI,EAAIlC,YAAYmF,EAAS3G,IACI,IAApB6L,GACTnI,EAAI1B,WAAW2E,EAAS3G,GAE1ByB,EAAQqK,MAAQpI,EAAIjC,QACb3G,KAAK6Q,gBAAgBlK,EAC9B,EAGAsK,uBAAwB,SAAU/R,EAAGlC,GACnC,IAAIuJ,EAAOvG,KACTkR,EAAa,SAAUhM,GACrB,OAAO9K,EAAEqM,WAAWC,YAAYH,EAAMrB,GAAMyB,SAC9C,EACF3J,EAAKmJ,QAAU,SAAUgL,EAAaC,GAYpC,OAXID,GAAeC,KACjBpU,EAAKqU,cAAgBrR,KAAKqR,eAAiBrR,KAAKqR,eAC9CH,EAAW,CAAClR,QACXuG,EAAKY,eAAc,WAClB,OAAInK,EAAKiK,YACA7M,EAAEqM,WAAWS,WAAWX,EAAM,CAACvJ,IAAO2J,UAExCuK,EAAWnE,UACpB,IACCxG,EAAKY,cAAcgK,EAAaC,IAE9BpR,KAAKqR,eAAiBH,EAAW,CAAClR,MAC3C,EACAhD,EAAKkP,OAAS,WASZ,MARqB,YAAjBlM,KAAK0Q,UACP1T,EAAKsU,MAAQtR,KAAKsR,OAKV,IAJN/K,EAAKK,SACH,SACAxM,EAAE0F,MAAM,SAAU,CAAEyJ,eAAgBrK,IACpCc,OACauG,EAAKgL,QAAQrS,EAAGc,OAE5BA,KAAKsR,OAAS/K,EAAKuK,gBAC5B,EACA9T,EAAKgU,MAAQ,WACX,OAAIhR,KAAKsR,MACAtR,KAAKsR,MAAMN,SAEpBhR,KAAKiH,YAAc,QACnBV,EAAKK,SAAS,OAAQ,KAAM5G,MACrBuG,EAAKuK,gBAAe,GAC7B,EACA9T,EAAK0T,MAAQ,WACX,OAAI1Q,KAAKsR,MACA/K,EAAKiK,kBAAkBxQ,KAAKsR,OAEjCtR,KAAKqR,cACA9K,EAAKiK,kBAAkBxQ,KAAKqR,oBADrC,CAGF,EACArU,EAAKyK,WAAa,WAChB,OACGzH,KAAKsR,OACNtR,KAAKqR,eAC0C,YAA/C9K,EAAKiK,kBAAkBxQ,KAAKqR,cAEhC,EACArU,EAAKgR,SAAW,WACd,OAAOhO,KAAKiO,SACd,EACAjR,EAAKhB,SAAW,WACd,OAAOgE,KAAKmO,SACd,CACF,EAIAqD,kBAAmB,SAAUF,GAC3B,IAAIG,EAAQH,EAAMnV,kBAAkB,SAClCoQ,EAAQkF,GAASA,EAAM/E,MAAM,KAC7BgF,EAAgBnF,GAASA,EAAM3E,OAAS,GAAK+J,SAASpF,EAAM,GAAI,IAClE,OAAOmF,GAAiBA,EAAgB,CAC1C,EAOAxB,eAAgB,SAAUrU,EAAS+V,GACjC/V,EAAQ0P,cAAgB1P,EAAQ0P,eAAiB,EACjD,IAQE+F,EACA1C,EATErI,EAAOvG,KACT6I,EAAOhN,EAAQgM,MAAM,GACrBgK,EAAKhJ,EAAKC,KACVgJ,EAAKjW,EAAQ0P,cACbwG,EAAMlW,EAAQyP,cAAgBuG,EAC9BvX,EAAQ0F,KAAK6M,WACbjE,EAAMxO,EAAEqM,WACRE,EAAUiC,EAAIjC,UAGhB,UAEI3G,KAAK0N,aAAa7R,IAClBvB,IACCwX,IAAuB,aAAhB1X,EAAEgD,KAAK2U,GAAsBA,EAAIlW,GAAWkW,GAAOF,KAE7DhW,EAAQmB,UAIN4U,IAGAE,GAAMD,GACRhJ,EAAKpM,MAAQZ,EAAQkN,KAAK,iBACnB/I,KAAK8Q,gBAAe,EAAOjV,EAAQgQ,QAAS,CACjD,KACA,QACAhD,EAAKpM,UAITmS,EAAS,WAEP,IAAIoD,EAAI5X,EAAEuN,OAAO,CAAC,EAAG9L,GACnBoW,EAAgBD,EAAE/D,UAAUZ,OAC9B2E,EAAEtC,KAAOpV,EAAMT,KACbgP,EACAiJ,EACAA,GAAsB,aAAhB1X,EAAEgD,KAAK2U,GAAsBA,EAAIC,GAAKD,GAC5ClJ,EAAKzL,MAIP4U,EAAExD,UAAYwD,EAAEtC,KAAK5G,KAErBkJ,EAAEvC,aACA,SAAWqC,EAAK,KAAOA,EAAKE,EAAExD,UAAY,GAAK,IAAMqD,EAEvDtL,EAAKK,SAAS,kBAAmB,KAAMoL,GAEvCzL,EAAKgJ,aAAayC,GAElBzL,EAAKmI,sBAAsBsD,GAC3BV,IAC2C,IAAxC/K,EAAKK,SAAS,YAAa,KAAMoL,IAAgB5X,EAAEwB,KAAKoW,IACzDzL,EAAKuK,gBAAe,EAAOkB,EAAEnG,UAE5BpO,MAAK,SAAUsC,EAAQmS,EAAYZ,GAClCQ,EAAKvL,EAAKiL,kBAAkBF,IAAUQ,EAAKE,EAAExD,UAIzCyD,EAAgBD,EAAExD,UAAYwD,EAAE/D,UAAUZ,QAC5C9G,EAAK8H,YACHjU,EAAE0F,MAAM,WAAY,CAClBwO,kBAAkB,EAClBjB,OAAQyE,EAAKE,EAAEzG,cACfuC,MAAOgE,EAAKE,EAAEzG,gBAEhByG,GAGJnW,EAAQ0P,cAAgByG,EAAEzG,cAAgBuG,EAC1CE,EAAEjS,OAASA,EACXiS,EAAEE,WAAaA,EACfF,EAAEV,MAAQA,EACV/K,EAAKK,SAAS,YAAa,KAAMoL,GACjCzL,EAAKK,SAAS,cAAe,KAAMoL,GAC/BF,EAAKD,EAGPjD,IAEAhG,EAAIlC,YAAYsL,EAAEnG,QAAS,CAAC9L,EAAQmS,EAAYZ,GAEpD,IACCjK,MAAK,SAAUiK,EAAOY,EAAYjL,GACjC+K,EAAEV,MAAQA,EACVU,EAAEE,WAAaA,EACfF,EAAE/K,YAAcA,EAChBV,EAAKK,SAAS,YAAa,KAAMoL,GACjCzL,EAAKK,SAAS,cAAe,KAAMoL,GACnCpJ,EAAI1B,WAAW8K,EAAEnG,QAAS,CAACyF,EAAOY,EAAYjL,GAChD,IACCG,QAAO,WACNb,EAAKwI,wBAAwBiD,EAC/B,GACJ,EACAhS,KAAK6Q,gBAAgBlK,GACrBA,EAAQqK,MAAQ,WACd,OAAOM,EAAMN,OACf,EACApC,IACOjI,IACT,EAEAwL,YAAa,SAAUjT,EAAGlC,GACH,IAAjBgD,KAAKoS,UAIPpS,KAAK4G,SAAS,SAEd5G,KAAKyO,cAAgB,IAAIzO,KAAKgN,cAE9BhN,KAAKiO,UAAUZ,OAASrN,KAAKiO,UAAUH,MAAQ,EAC/C9N,KAAKiO,UAAUX,QAAU,GAK3BtN,KAAKkO,oBAAoBlR,GACzBgD,KAAK+N,oBAAoB/Q,GACzBA,EAAKiR,UAAUZ,OAASrQ,EAAKqQ,OAASrQ,EAAKuO,eAAiB,EAC5DvO,EAAKiR,UAAUH,MAAQ9Q,EAAK8Q,MAAQ9N,KAAK6N,UAAU7Q,EAAK6K,QAAU,EAClE7K,EAAKiR,UAAUX,QAAUtQ,EAAKsQ,QAAU,EACxCtN,KAAKoS,SAAW,EAEhBpS,KAAKiO,UAAUZ,QAAUrQ,EAAKqQ,OAC9BrN,KAAKiO,UAAUH,OAAS9Q,EAAK8Q,KAC/B,EAEAuE,QAAS,SAAUtS,EAAQmS,EAAYZ,EAAOzV,GAC5C,IAAIiS,EAAQjS,EAAQoS,UAAUH,MAC5B9R,EAAWH,EAAQsS,UACjBtS,EAAQoS,UAAUZ,OAASS,GAG7B9N,KAAKqO,YACHjU,EAAE0F,MAAM,WAAY,CAClBwO,kBAAkB,EAClBjB,OAAQS,EACRA,MAAOA,IAETjS,GAGJG,EAAS+D,OAASlE,EAAQkE,OAASA,EACnC/D,EAASkW,WAAarW,EAAQqW,WAAaA,EAC3ClW,EAASsV,MAAQzV,EAAQyV,MAAQA,EACjCtR,KAAK4G,SAAS,OAAQ,KAAM/K,EAC9B,EAEAyW,QAAS,SAAUhB,EAAOY,EAAYjL,EAAapL,GACjD,IAAIG,EAAWH,EAAQsS,UACnBtS,EAAQ2P,sBAGVxL,KAAKiO,UAAUZ,QAAUxR,EAAQoS,UAAUZ,OAC3CrN,KAAKiO,UAAUH,OAASjS,EAAQoS,UAAUH,OAE5C9R,EAASsV,MAAQzV,EAAQyV,MAAQA,EACjCtV,EAASkW,WAAarW,EAAQqW,WAAaA,EAC3ClW,EAASiL,YAAcpL,EAAQoL,YAAcA,EAC7CjH,KAAK4G,SAAS,OAAQ,KAAM/K,EAC9B,EAEA0W,UAAW,SAAUC,EAAeN,EAAYO,EAAc5W,GAG5DmE,KAAK4G,SAAS,SAAU,KAAM/K,EAChC,EAEA0V,QAAS,SAAUrS,EAAGlC,GACfA,EAAKkP,QACRlM,KAAKiR,uBAAuB/R,EAAGlC,GAEjC,IACEsU,EACAoB,EACAC,EACAC,EAJErM,EAAOvG,KAKTnE,EAAU0K,EAAKgK,iBAAiBvT,GAChCD,EAAO,WAsDL,OArDAwJ,EAAKsM,UAAY,EAEjBhX,EAAQ4S,cAAgB,IAAIlI,EAAKyG,cACjCsE,EACEA,KAEIoB,IAKM,IAJNnM,EAAKK,SACH,OACAxM,EAAE0F,MAAM,OAAQ,CAAEyJ,eAAgBrK,IAClCrD,KAEF0K,EAAKuK,gBAAe,EAAOjV,EAAQgQ,QAAS6G,IAC9CnM,EAAK2J,eAAerU,IACpBzB,EAAEwB,KAAKC,IAEN4B,MAAK,SAAUsC,EAAQmS,EAAYZ,GAClC/K,EAAK8L,QAAQtS,EAAQmS,EAAYZ,EAAOzV,EAC1C,IACCwL,MAAK,SAAUiK,EAAOY,EAAYjL,GACjCV,EAAK+L,QAAQhB,EAAOY,EAAYjL,EAAapL,EAC/C,IACCuL,QAAO,SAAUoL,EAAeN,EAAYO,GAU3C,GATAlM,EAAKwI,wBAAwBlT,GAC7B0K,EAAKgM,UACHC,EACAN,EACAO,EACA5W,GAEF0K,EAAKsM,UAAY,EACjBtM,EAAK6L,SAAW,EAEdvW,EAAQmP,wBACRnP,EAAQmP,uBAAyBzE,EAAKsM,SAKtC,IADA,IAAIC,EAAWvM,EAAKwM,OAAOC,QACpBF,GAAU,CACf,GAAyC,YAArCvM,EAAKiK,kBAAkBsC,GAAyB,CAClDA,EAASG,UACT,KACF,CACAH,EAAWvM,EAAKwM,OAAOC,OACzB,CAEmB,IAAjBzM,EAAK6L,SAGP7L,EAAKK,SAAS,OAElB,GAEN,EAEF,OADA5G,KAAKmS,YAAYjT,EAAGrD,GAElBmE,KAAKnE,QAAQkP,mBACZ/K,KAAKnE,QAAQmP,wBACZhL,KAAKnE,QAAQmP,wBAA0BhL,KAAK6S,UAE1C7S,KAAKnE,QAAQmP,uBAAyB,GACxC2H,EAAOvY,EAAEqM,WACTzG,KAAK+S,OAAOtR,KAAKkR,GACjBC,EAAOD,EAAKpM,EAAKY,cAAcpK,KAE/BiD,KAAKkT,UAAYlT,KAAKkT,UAAU3M,EAAKY,cAAcpK,EAAMA,GACzD6V,EAAO5S,KAAKkT,WAKdN,EAAK5B,MAAQ,WAEX,OADA0B,EAAU,MAACzY,EAAW,QAAS,SAC1BqX,EAMEA,EAAMN,SALP2B,GACFA,EAAKzL,WAAWrL,EAAQgQ,QAAS6G,GAE5B3V,IAGX,EACOiD,KAAK6Q,gBAAgB+B,IAEvB7V,GACT,EAEAoW,OAAQ,SAAUjU,EAAGlC,GACnB,IAUEoW,EACAC,EACAC,EACAxM,EAbEP,EAAOvG,KACTD,GAAS,EACTlE,EAAUzB,EAAEuN,OAAO,CAAC,EAAG3H,KAAKnE,QAASmB,GACrC6K,EAAQ7K,EAAK6K,MACb0L,EAAc1L,EAAMD,OACpB4L,EAAQ3X,EAAQ+O,sBAChB6I,EAAY5X,EAAQgP,yBACpB6I,EAAW7X,EAAQiP,iCACnB6I,EAAY,EACZjJ,EAAY1K,KAAKmQ,cAActU,GAK/B+X,EAAI,EACN,IAAKL,EACH,OAAO,EAKT,GAHIE,QAA+BxZ,IAAlB4N,EAAM,GAAGiB,OACxB2K,OAAYxZ,IAGV4B,EAAQ8O,mBAAqB6I,GAASC,IACvCzT,KAAK0N,aAAa7R,GAId,GAAMA,EAAQ8O,mBAAqB8I,IAAcD,EAWjD,IAAK3X,EAAQ8O,mBAAqB8I,EAGvC,IAFAH,EAAU,GACVF,EAAe,GACVtM,EAAI,EAAGA,EAAIyM,EAAazM,GAAQ,EACnC6M,GAAa9L,EAAMf,GAAGgC,KAAO4K,GAE3B5M,EAAI,IAAMyM,GACVI,EAAY9L,EAAMf,EAAI,GAAGgC,KAAO4K,EAAWD,GAC1CD,GAAS1M,EAAI,EAAI8M,GAAKJ,KAEvBF,EAAQ7R,KAAKoG,EAAMvN,MAAMsZ,EAAG9M,EAAI,KAChCuM,EAAiB3I,EAAUpQ,MAAMsZ,EAAG9M,EAAI,IACpBc,SAClByL,EAAiB3I,GAEnB0I,EAAa3R,KAAK4R,GAClBO,EAAI9M,EAAI,EACR6M,EAAY,QAIhBP,EAAe1I,OA7Bf,IAFA4I,EAAU,GACVF,EAAe,GACVtM,EAAI,EAAGA,EAAIyM,EAAazM,GAAK0M,EAChCF,EAAQ7R,KAAKoG,EAAMvN,MAAMwM,EAAGA,EAAI0M,KAChCH,EAAiB3I,EAAUpQ,MAAMwM,EAAGA,EAAI0M,IACpB5L,SAClByL,EAAiB3I,GAEnB0I,EAAa3R,KAAK4R,QAXpBC,EAAU,CAACzL,GACXuL,EAAe,CAAC1I,GAkDlB,OAfA1N,EAAK6W,cAAgBhM,EACrBzN,EAAEyM,KAAKyM,GAAWzL,GAAO,SAAUC,EAAOlO,GACxC,IAAIka,EAAU1Z,EAAEuN,OAAO,CAAC,EAAG3K,GAW3B,OAVA8W,EAAQjM,MAAQyL,EAAU1Z,EAAU,CAACA,GACrCka,EAAQpJ,UAAY0I,EAAatL,GACjCvB,EAAK2H,oBAAoB4F,GACzBvN,EAAKwH,oBAAoB+F,GACzBvN,EAAK0K,uBAAuB/R,EAAG4U,GAC/B/T,EAASwG,EAAKK,SACZ,MACAxM,EAAE0F,MAAM,MAAO,CAAEyJ,eAAgBrK,IACjC4U,EAGJ,IACO/T,CACT,EAEAgU,kBAAmB,SAAU/W,GAC3B,IAAI3B,EAAQ2B,EAAK0M,UACfsK,EAAa3Y,EAAM4Y,OAAM,GACzBC,EAAe7Y,EAAM8Y,GAAGpb,SAASqb,eAEnCpX,EAAKqX,eAAiBL,EACtB5Z,EAAE,iBAAiB6K,OAAO+O,GAAY,GAAGM,QAGzCjZ,EAAMkZ,MAAMP,GAAYQ,SAGpBN,GACFF,EAAWS,QAAQ,SAGrBra,EAAEsa,UAAUrZ,EAAM2T,IAAI,WAItBhP,KAAKnE,QAAQ6N,UAAY1J,KAAKnE,QAAQ6N,UAAU/H,KAAI,SAAUmF,EAAG7E,GAC/D,OAAIA,IAAO5G,EAAM,GACR2Y,EAAW,GAEb/R,CACT,IAGI5G,EAAM,KAAO2E,KAAKpG,QAAQ,KAC5BoG,KAAKpG,QAAUoa,EAEnB,EAEAW,qBAAsB,SAAUC,EAAOC,GACrC,IAGEC,EAHEvO,EAAOvG,KACT4I,EAAMxO,EAAEqM,WACRsO,EAAU,GAEVC,EAAe,SAAU9V,GACnBA,IAAMA,EAAE0V,QACV1V,EAAE0V,MAAQA,GAMZhM,EAAIqK,QAAQ,CAAC/T,GACf,EACA+V,EAAiB,SAAUF,GACzBxO,EACG2O,uBAAuBH,EAASF,EAAOD,EAAMrU,KAAO,KACpD9C,MAAK,SAAUoK,GACde,EAAIqK,QAAQpL,EACd,IACCR,KAAK2N,EACV,EACAG,EAAc,WACZL,EAAUK,aAAY,SAAUC,GACzBA,EAAQxN,QAGXmN,EAAUA,EAAQM,OAAOD,GACzBD,KAHAF,EAAeF,EAKnB,GAAGC,EACL,EAsBF,OApBAH,EAAOA,GAAQ,GACXD,EAAMU,OACJV,EAAMW,OAERX,EAAMW,MAAMC,aAAeX,EAC3BjM,EAAIqK,QAAQ2B,EAAMW,QAElBX,EAAM/L,MAAK,SAAUA,GACnBA,EAAK2M,aAAeX,EACpBjM,EAAIqK,QAAQpK,EACd,GAAGmM,GAEIJ,EAAMa,aACfX,EAAYF,EAAMc,eAClBP,KAIAvM,EAAIqK,QAAQ,IAEPrK,EAAIjC,SACb,EAEAuO,uBAAwB,SAAUH,EAASF,GACzC,IAAItO,EAAOvG,KACX,OAAO5F,EAAEub,KACN7I,MACC1S,EACAA,EAAEuH,IAAIoT,GAAS,SAAUH,GACvB,OAAOrO,EAAKoO,qBAAqBC,EAAOC,EAC1C,KAED7U,KAAKmH,eAAc,WAClB,OAAO9M,MAAMhB,UAAUgc,OAAOvI,MAAM,GAAIC,UAC1C,GACJ,EAEA6I,iBAAkB,SAAUzM,GAG1B,IAAI0M,GADJ1M,EAAeA,GAAgB,CAAC,GACP0M,MACzB,OACEA,GACAA,EAAMjO,SACLiO,EAAM,GAAGC,kBAAoBD,EAAM,GAAGE,YAEhC/V,KAAKkV,uBACV9a,EAAEuH,IAAIkU,GAAO,SAAUG,GACrB,IAAIpB,EACJ,OAAIoB,EAAKF,mBACPlB,EAAQoB,EAAKF,sBAGXlB,EAAMW,MAAQS,EAAKC,aAEdrB,GAEFoB,EAAKD,YACd,KAGG3b,EAAEqM,WAAWwM,QAAQ7Y,EAAE8b,UAAU/M,EAAatB,QAAQlB,SAC/D,EAEAwP,yBAA0B,SAAUzM,GAGlC,IACE7B,EACA1N,EAFE4a,GADJrL,EAAYtP,EAAEsP,IACUI,KAAK,WAG7B,GAAIiL,GAAWA,EAAQnN,OACrB,OAAO5H,KAAKkV,uBAAuBH,GAGrC,IADAlN,EAAQzN,EAAE8b,UAAUxM,EAAUI,KAAK,WACxBlC,YASkB3N,IAAlB4N,EAAM,GAAGtH,MAAsBsH,EAAM,GAAGiI,UAEjD1V,EAAEyM,KAAKgB,GAAO,SAAUC,EAAOe,GAC7BA,EAAKtI,KAAOsI,EAAKiH,SACjBjH,EAAKC,KAAOD,EAAKF,QACnB,QAdiB,CAEjB,KADAxO,EAAQuP,EAAUI,KAAK,UAErB,OAAO1P,EAAEqM,WAAWwM,QAAQ,IAAItM,UAKlCkB,EAAQ,CAAC,CAAEtH,KAAMpG,EAAMuE,QAAQ,QAAS,KAC1C,CAOA,OAAOtE,EAAEqM,WAAWwM,QAAQpL,GAAOlB,SACrC,EAEAyP,mBAAoB,SAAU1M,GAC5B,OAAMA,aAAqBtP,GAA2B,IAArBsP,EAAU9B,OAGpCxN,EAAEub,KACN7I,MAAM1S,EAAGA,EAAEuH,IAAI+H,EAAW1J,KAAKmW,2BAC/BnW,KAAKmH,eAAc,WAClB,OAAO9M,MAAMhB,UAAUgc,OAAOvI,MAAM,GAAIC,UAC1C,IANO/M,KAAKmW,yBAAyBzM,EAOzC,EAEA2M,UAAW,SAAUnX,GACnB,IAAIqH,EAAOvG,KACThD,EAAO,CACL0M,UAAWtP,EAAE8E,EAAEwB,QACfqB,KAAM3H,EAAE8E,EAAEwB,OAAOqB,OAErB/B,KAAKoW,mBAAmBpZ,EAAK0M,WAAWtC,QAAO,SAAUS,GACvD7K,EAAK6K,MAAQA,EACTtB,EAAK1K,QAAQ4O,kBACflE,EAAKwN,kBAAkB/W,IAOjB,IAJNuJ,EAAKK,SACH,SACAxM,EAAE0F,MAAM,SAAU,CAAEyJ,eAAgBrK,IACpClC,IAGFuJ,EAAK4M,OAAOjU,EAAGlC,EAEnB,GACF,EAEAsZ,SAAU,SAAUpX,GAClB,IAAI2W,EACA3W,EAAEkK,eACFlK,EAAEkK,cAAcmN,eAChBrX,EAAEkK,cAAcmN,cAAcV,MAChC7Y,EAAO,CAAE6K,MAAO,IACdgO,GAASA,EAAMjO,SACjBxN,EAAEyM,KAAKgP,GAAO,SAAU/N,EAAOkO,GAC7B,IAAInN,EAAOmN,EAAKC,WAAaD,EAAKC,YAC9BpN,GACF7L,EAAK6K,MAAMpG,KAAKoH,EAEpB,KAMQ,IAJN7I,KAAK4G,SACH,QACAxM,EAAE0F,MAAM,QAAS,CAAEyJ,eAAgBrK,IACnClC,IAGFgD,KAAKmT,OAAOjU,EAAGlC,GAGrB,EAEAwZ,QAAS,SAAUtX,GACjBA,EAAEiK,aAAejK,EAAEkK,eAAiBlK,EAAEkK,cAAcD,aACpD,IAAI5C,EAAOvG,KACTmJ,EAAejK,EAAEiK,aACjBnM,EAAO,CAAC,EACNmM,GAAgBA,EAAatB,OAASsB,EAAatB,MAAMD,SAC3D1I,EAAEC,iBACFa,KAAK4V,iBAAiBzM,GAAc/B,QAAO,SAAUS,GACnD7K,EAAK6K,MAAQA,GAML,IAJNtB,EAAKK,SACH,OACAxM,EAAE0F,MAAM,OAAQ,CAAEyJ,eAAgBrK,IAClClC,IAGFuJ,EAAK4M,OAAOjU,EAAGlC,EAEnB,IAEJ,EAEAyZ,YAAaxN,EAAe,YAE5ByN,aAAczN,EAAe,aAE7B0N,aAAc1N,EAAe,aAE7B2N,mBAAoB,WACd5W,KAAK0N,aAAa1N,KAAKnE,WACzBmE,KAAK6W,IAAI7W,KAAKnE,QAAQ0O,SAAU,CAC9BuM,SAAU9W,KAAKyW,YACfM,KAAM/W,KAAKwW,QAEXQ,UAAWhX,KAAK0W,aAEhBO,UAAWjX,KAAK2W,eAElB3W,KAAK6W,IAAI7W,KAAKnE,QAAQ2O,UAAW,CAC/B0M,MAAOlX,KAAKsW,YAGZlc,EAAEqP,QAAQC,WACZ1J,KAAK6W,IAAI7W,KAAKnE,QAAQ6N,UAAW,CAC/ByN,OAAQnX,KAAKqW,WAGnB,EAEAe,sBAAuB,WACrBpX,KAAKqX,KAAKrX,KAAKnE,QAAQ0O,SAAU,qCACjCvK,KAAKqX,KAAKrX,KAAKnE,QAAQ2O,UAAW,SAClCxK,KAAKqX,KAAKrX,KAAKnE,QAAQ6N,UAAW,SACpC,EAEA4N,SAAU,WACRtX,KAAKoX,uBACP,EAEAG,WAAY,SAAUvd,EAAKG,GACzB,IAAIqd,GAAmD,IAA1Cpd,EAAEiP,QAAQrP,EAAKgG,KAAK4M,iBAC7B4K,GACFxX,KAAKoX,wBAEPpX,KAAKkI,OAAOlO,EAAKG,GACbqd,IACFxX,KAAKyX,sBACLzX,KAAK4W,qBAET,EAEAa,oBAAqB,WACnB,IAAI5b,EAAUmE,KAAKnE,aACO5B,IAAtB4B,EAAQ6N,UACV7N,EAAQ6N,UAAY1J,KAAKpG,QAAQua,GAAG,sBAChCnU,KAAKpG,QACLoG,KAAKpG,QAAQ8d,KAAK,sBACX7b,EAAQ6N,qBAAqBtP,IACxCyB,EAAQ6N,UAAYtP,EAAEyB,EAAQ6N,YAE1B7N,EAAQ0O,oBAAoBnQ,IAChCyB,EAAQ0O,SAAWnQ,EAAEyB,EAAQ0O,WAEzB1O,EAAQ2O,qBAAqBpQ,IACjCyB,EAAQ2O,UAAYpQ,EAAEyB,EAAQ2O,WAElC,EAEAmN,WAAY,SAAUC,GACpB,IAAIrL,EAAQqL,EAAIlL,MAAM,KACpBmL,EAAYtL,EAAMuL,MAEpB,OADAvL,EAAMyG,QACC,IAAIrJ,OAAO4C,EAAM1K,KAAK,KAAMgW,EACrC,EAEAE,gBAAiB,SAAU/d,EAAKG,GAC9B,MACU,QAARH,GACkB,WAAlBI,EAAEgD,KAAKjD,IACP,qBAAqB6O,KAAK7O,EAE9B,EAEA6d,oBAAqB,WACnB,IAAIzR,EAAOvG,KACTnE,EAAUmE,KAAKnE,QACfmB,EAAOgD,KAAKpG,QAAQoD,OAEtB5C,EAAEyM,KAAK7G,KAAKpG,QAAQ,GAAGqe,YAAY,SAAUnQ,EAAOwI,GAClD,IACEnW,EADEH,EAAMsW,EAAK/P,KAAK2X,cAEhB,SAASlP,KAAKhP,KAEhBA,EAAMA,EAAIM,MAAM,GAAGoE,QAAQ,WAAW,SAAUkZ,GAC9C,OAAOA,EAAIpQ,OAAO,GAAGnK,aACvB,IACAlD,EAAQ6C,EAAKhD,GACTuM,EAAKwR,gBAAgB/d,EAAKG,KAC5BA,EAAQoM,EAAKoR,WAAWxd,IAE1B0B,EAAQ7B,GAAOG,EAEnB,GACF,EAEA8N,QAAS,WACPjI,KAAKgY,sBACLhY,KAAKyX,sBACLzX,KAAK+S,OAAS,GACd/S,KAAKkT,UAAYlT,KAAK8Q,gBAAe,GACrC9Q,KAAK6S,SAAW7S,KAAKoS,QAAU,EAC/BpS,KAAK+N,oBAAoB/N,MACzBA,KAAK4W,oBACP,EAIAuB,OAAQ,WACN,OAAOnY,KAAKoS,OACd,EAMApE,SAAU,WACR,OAAOhO,KAAKiO,SACd,EAMAlI,IAAK,SAAU/I,GACb,IAAIuJ,EAAOvG,KACNhD,IAAQgD,KAAKnE,QAAQyF,WAGtBtE,EAAK0M,YAAc1M,EAAK6K,MAC1B7H,KAAKoW,mBAAmBpZ,EAAK0M,WAAWtC,QAAO,SAAUS,GACvD7K,EAAK6K,MAAQA,EACbtB,EAAK4M,OAAO,KAAMnW,EACpB,KAEAA,EAAK6K,MAAQzN,EAAE8b,UAAUlZ,EAAK6K,OAC9B7H,KAAKmT,OAAO,KAAMnW,IAEtB,EAOAD,KAAM,SAAUC,GACd,GAAIA,IAASgD,KAAKnE,QAAQyF,SAAU,CAClC,GAAItE,EAAK0M,YAAc1M,EAAK6K,MAAO,CACjC,IAGEyJ,EACAoB,EAJEnM,EAAOvG,KACT4I,EAAMxO,EAAEqM,WACRE,EAAUiC,EAAIjC,UA8BhB,OA3BAA,EAAQqK,MAAQ,WAEd,OADA0B,GAAU,EACNpB,EACKA,EAAMN,SAEfpI,EAAIwP,OAAO,KAAM,QAAS,SACnBzR,EACT,EACA3G,KAAKoW,mBAAmBpZ,EAAK0M,WAAWtC,QAAO,SAAUS,GACnD6K,IAGC7K,EAAMD,QAIX5K,EAAK6K,MAAQA,GACbyJ,EAAQ/K,EAAKgL,QAAQ,KAAMvU,IACrBqb,MACJ,SAAUtY,EAAQmS,EAAYZ,GAC5B1I,EAAIqK,QAAQlT,EAAQmS,EAAYZ,EAClC,IACA,SAAUA,EAAOY,EAAYjL,GAC3B2B,EAAIwP,OAAO9G,EAAOY,EAAYjL,EAChC,KAXA2B,EAAIwP,SAaR,IACOpY,KAAK6Q,gBAAgBlK,EAC9B,CAEA,GADA3J,EAAK6K,MAAQzN,EAAE8b,UAAUlZ,EAAK6K,OAC1B7K,EAAK6K,MAAMD,OACb,OAAO5H,KAAKuR,QAAQ,KAAMvU,EAE9B,CACA,OAAOgD,KAAK8Q,gBAAe,EAAO9T,GAAQA,EAAK6O,QACjD,IA7wCc,IACRU,CA8wCV,OAjjDqD,2DAQpD,CAZD,yBCdA,uBACC,aAKC,EAAQ,CAAE,cAAmB,2BAAP,EAMnB,SAAUnS,GAKf,OAFAA,EAAEke,GAAKle,EAAEke,IAAM,CAAC,EAETle,EAAEke,GAAGC,QAAU,QAEtB,GAb+B,8BAM7B,CAZF,yBCAA,WAeA,SAAY5S,GACX,aAKC,EAAQ,CAAE,QAAU,SAAe,EAMhC,SAAUvL,GAGf,IAAIoe,EAAa,EACbC,EAAuBpe,MAAMhB,UAAU+U,eACvCsK,EAAcre,MAAMhB,UAAUiB,MAitBlC,OA/sBAF,EAAEsa,UAAY,SAAYiE,GACzB,OAAO,SAAUC,GAChB,IAAIC,EAAQC,EAAMhS,EAClB,IAAMA,EAAI,EAA4B,OAAvBgS,EAAOF,EAAO9R,IAAeA,KAG3C+R,EAASze,EAAE2e,MAAOD,EAAM,YACTD,EAAOG,QACrB5e,EAAG0e,GAAOG,eAAgB,UAG5BN,EAAMC,EACP,CACC,CAbY,CAaTxe,EAAEsa,WAEPta,EAAE4L,OAAS,SAAUzF,EAAM2Y,EAAM7f,GAChC,IAAI8f,EAAqBC,EAAaC,EAIlCC,EAAmB,CAAC,EAEpBC,EAAYhZ,EAAKmM,MAAO,KAAO,GAE/B8M,EAAWD,EAAY,KAD3BhZ,EAAOA,EAAKmM,MAAO,KAAO,IAuH1B,OApHMrT,IACLA,EAAY6f,EACZA,EAAO9e,EAAEqf,QAGLpf,MAAMuT,QAASvU,KACnBA,EAAYe,EAAEuN,OAAOmF,MAAO,KAAM,CAAE,CAAC,GAAIuI,OAAQhc,KAIlDe,EAAEsf,KAAKC,QAASH,EAAStB,eAAkB,SAAUY,GACpD,QAAS1e,EAAE4C,KAAM8b,EAAMU,EACxB,EAEApf,EAAGmf,GAAcnf,EAAGmf,IAAe,CAAC,EACpCJ,EAAsB/e,EAAGmf,GAAahZ,GACtC6Y,EAAchf,EAAGmf,GAAahZ,GAAS,SAAU1E,EAASjC,GAGzD,IAAMoG,OAASA,KAAK4Z,cACnB,OAAO,IAAIR,EAAavd,EAASjC,GAK7BmT,UAAUnF,QACd5H,KAAK4Z,cAAe/d,EAASjC,EAE/B,EAGAQ,EAAEuN,OAAQyR,EAAaD,EAAqB,CAC3CZ,QAASlf,EAAUkf,QAInBsB,OAAQzf,EAAEuN,OAAQ,CAAC,EAAGtO,GAItBygB,mBAAoB,MAGrBT,EAAgB,IAAIH,GAKNrd,QAAUzB,EAAE4L,OAAO2B,OAAQ,CAAC,EAAG0R,EAAcxd,SAC3DzB,EAAEyM,KAAMxN,GAAW,SAAUyQ,EAAM3P,GAKlCmf,EAAkBxP,GAJI,oBAAV3P,EAIe,WAC1B,SAAS+N,IACR,OAAOgR,EAAK7f,UAAWyQ,GAAOgD,MAAO9M,KAAM+M,UAC5C,CAEA,SAASgN,EAAa7U,GACrB,OAAOgU,EAAK7f,UAAWyQ,GAAOgD,MAAO9M,KAAMkF,EAC5C,CAEA,OAAO,WACN,IAEI8U,EAFAC,EAAUja,KAAKkI,OACfgS,EAAela,KAAK+Z,YAWxB,OARA/Z,KAAKkI,OAASA,EACdlI,KAAK+Z,YAAcA,EAEnBC,EAAc7f,EAAM2S,MAAO9M,KAAM+M,WAEjC/M,KAAKkI,OAAS+R,EACdja,KAAK+Z,YAAcG,EAEZF,CACR,CACC,CAxByB,GAHC7f,CA4B7B,IACAif,EAAY/f,UAAYe,EAAE4L,OAAO2B,OAAQ0R,EAAe,CAKvDc,kBAAmBhB,GAAwBE,EAAcc,mBAA8B5Z,GACrF+Y,EAAkB,CACpBF,YAAaA,EACbG,UAAWA,EACXa,WAAY7Z,EACZ8Z,eAAgBb,IAOZL,GACJ/e,EAAEyM,KAAMsS,EAAoBW,oBAAoB,SAAUhT,EAAGwT,GAC5D,IAAIC,EAAiBD,EAAMjhB,UAI3Be,EAAE4L,OAAQuU,EAAehB,UAAY,IAAMgB,EAAeH,WAAYhB,EACrEkB,EAAMT,OACR,WAIOV,EAAoBW,oBAE3BZ,EAAKY,mBAAmBrY,KAAM2X,GAG/Bhf,EAAE4L,OAAOwU,OAAQja,EAAM6Y,GAEhBA,CACR,EAEAhf,EAAE4L,OAAO2B,OAAS,SAAUjH,GAO3B,IANA,IAGI1G,EACAG,EAJAkB,EAAQqd,EAAY7e,KAAMkT,UAAW,GACrC0N,EAAa,EACbC,EAAcrf,EAAMuM,OAIhB6S,EAAaC,EAAaD,IACjC,IAAMzgB,KAAOqB,EAAOof,GACnBtgB,EAAQkB,EAAOof,GAAczgB,GACxBye,EAAqB5e,KAAMwB,EAAOof,GAAczgB,SAAmBC,IAAVE,IAGxDC,EAAEugB,cAAexgB,GACrBuG,EAAQ1G,GAAQI,EAAEugB,cAAeja,EAAQ1G,IACxCI,EAAE4L,OAAO2B,OAAQ,CAAC,EAAGjH,EAAQ1G,GAAOG,GAGpCC,EAAE4L,OAAO2B,OAAQ,CAAC,EAAGxN,GAItBuG,EAAQ1G,GAAQG,GAKpB,OAAOuG,CACR,EAEAtG,EAAE4L,OAAOwU,OAAS,SAAUja,EAAMqa,GACjC,IAAIpB,EAAWoB,EAAOvhB,UAAUghB,gBAAkB9Z,EAClDnG,EAAEoS,GAAIjM,GAAS,SAAU1E,GACxB,IAAIgf,EAAkC,kBAAZhf,EACtBqJ,EAAOwT,EAAY7e,KAAMkT,UAAW,GACpCiN,EAAcha,KA4DlB,OA1DK6a,EAIE7a,KAAK4H,QAAsB,aAAZ/L,EAGpBmE,KAAK6G,MAAM,WACV,IAAIiU,EACAC,EAAW3gB,EAAE4C,KAAMgD,KAAMwZ,GAE7B,MAAiB,aAAZ3d,GACJme,EAAce,GACP,GAGFA,EAM8B,oBAAxBA,EAAUlf,IACG,MAAxBA,EAAQ2L,OAAQ,GACTpN,EAAEqC,MAAO,mBAAqBZ,EAAU,SAAW0E,EACzD,qBAGFua,EAAcC,EAAUlf,GAAUiR,MAAOiO,EAAU7V,MAE9B6V,QAA4B9gB,IAAhB6gB,GAChCd,EAAcc,GAAeA,EAAYrO,OACxCuN,EAAYgB,UAAWF,EAAY1a,OACnC0a,GACM,QAJR,EAbQ1gB,EAAEqC,MAAO,0BAA4B8D,EAA5B,uDAEgB1E,EAAU,IAiB5C,IA/BAme,OAAc/f,GAoCViL,EAAK0C,SACT/L,EAAUzB,EAAE4L,OAAO2B,OAAOmF,MAAO,KAAM,CAAEjR,GAAUwZ,OAAQnQ,KAG5DlF,KAAK6G,MAAM,WACV,IAAIkU,EAAW3gB,EAAE4C,KAAMgD,KAAMwZ,GACxBuB,GACJA,EAASxZ,OAAQ1F,GAAW,CAAC,GACxBkf,EAASE,OACbF,EAASE,SAGV7gB,EAAE4C,KAAMgD,KAAMwZ,EAAU,IAAIoB,EAAQ/e,EAASmE,MAE/C,KAGMga,CACR,CACD,EAEA5f,EAAEqf,OAAS,WAAoC,EAC/Crf,EAAEqf,OAAOK,mBAAqB,GAE9B1f,EAAEqf,OAAOpgB,UAAY,CACpB+gB,WAAY,SACZD,kBAAmB,GACnBe,eAAgB,QAEhBrf,QAAS,CACRsf,QAAS,CAAC,EACV7Z,UAAU,EAGV8Z,OAAQ,MAGTxB,cAAe,SAAU/d,EAASjC,GACjCA,EAAUQ,EAAGR,GAAWoG,KAAKkb,gBAAkBlb,MAAQ,GACvDA,KAAKpG,QAAUQ,EAAGR,GAClBoG,KAAKqb,KAAO7C,IACZxY,KAAKsb,eAAiB,IAAMtb,KAAKoa,WAAapa,KAAKqb,KAEnDrb,KAAKub,SAAWnhB,IAChB4F,KAAKwb,UAAYphB,IACjB4F,KAAKyb,UAAYrhB,IACjB4F,KAAK0b,qBAAuB,CAAC,EAExB9hB,IAAYoG,OAChB5F,EAAE4C,KAAMpD,EAASoG,KAAKqa,eAAgBra,MACtCA,KAAK6W,KAAK,EAAM7W,KAAKpG,QAAS,CAC7Bof,OAAQ,SAAU1Z,GACZA,EAAMoB,SAAW9G,GACrBoG,KAAK2b,SAEP,IAED3b,KAAKjH,SAAWqB,EAAGR,EAAQ4K,MAG1B5K,EAAQgiB,cAGRhiB,EAAQb,UAAYa,GACrBoG,KAAKX,OAASjF,EAAG4F,KAAKjH,SAAU,GAAI8iB,aAAe7b,KAAKjH,SAAU,GAAI+iB,eAGvE9b,KAAKnE,QAAUzB,EAAE4L,OAAO2B,OAAQ,CAAC,EAChC3H,KAAKnE,QACLmE,KAAK+b,oBACLlgB,GAEDmE,KAAKiI,UAEAjI,KAAKnE,QAAQyF,UACjBtB,KAAKgc,mBAAoBhc,KAAKnE,QAAQyF,UAGvCtB,KAAK4G,SAAU,SAAU,KAAM5G,KAAKic,uBACpCjc,KAAKib,OACN,EAEAc,kBAAmB,WAClB,MAAO,CAAC,CACT,EAEAE,oBAAqB7hB,EAAEoO,KAEvBP,QAAS7N,EAAEoO,KAEXyS,MAAO7gB,EAAEoO,KAETmT,QAAS,WACR,IAAIpV,EAAOvG,KAEXA,KAAKsX,WACLld,EAAEyM,KAAM7G,KAAK0b,sBAAsB,SAAU1hB,EAAKG,GACjDoM,EAAK2V,aAAc/hB,EAAOH,EAC3B,IAIAgG,KAAKpG,QACHoV,IAAKhP,KAAKsb,gBACVa,WAAYnc,KAAKqa,gBACnBra,KAAKgG,SACHgJ,IAAKhP,KAAKsb,gBACVc,WAAY,iBAGdpc,KAAKub,SAASvM,IAAKhP,KAAKsb,eACzB,EAEAhE,SAAUld,EAAEoO,KAEZxC,OAAQ,WACP,OAAOhG,KAAKpG,OACb,EAEA2H,OAAQ,SAAUvH,EAAKG,GACtB,IACIoS,EACA8P,EACAvV,EAHAjL,EAAU7B,EAKd,GAA0B,IAArB+S,UAAUnF,OAGd,OAAOxN,EAAE4L,OAAO2B,OAAQ,CAAC,EAAG3H,KAAKnE,SAGlC,GAAoB,kBAAR7B,EAMX,GAHA6B,EAAU,CAAC,EACX0Q,EAAQvS,EAAI0S,MAAO,KACnB1S,EAAMuS,EAAMyG,QACPzG,EAAM3E,OAAS,CAEnB,IADAyU,EAAYxgB,EAAS7B,GAAQI,EAAE4L,OAAO2B,OAAQ,CAAC,EAAG3H,KAAKnE,QAAS7B,IAC1D8M,EAAI,EAAGA,EAAIyF,EAAM3E,OAAS,EAAGd,IAClCuV,EAAW9P,EAAOzF,IAAQuV,EAAW9P,EAAOzF,KAAS,CAAC,EACtDuV,EAAYA,EAAW9P,EAAOzF,IAG/B,GADA9M,EAAMuS,EAAMuL,MACc,IAArB/K,UAAUnF,OACd,YAA4B3N,IAArBoiB,EAAWriB,GAAsB,KAAOqiB,EAAWriB,GAE3DqiB,EAAWriB,GAAQG,CACpB,KAAO,CACN,GAA0B,IAArB4S,UAAUnF,OACd,YAA+B3N,IAAxB+F,KAAKnE,QAAS7B,GAAsB,KAAOgG,KAAKnE,QAAS7B,GAEjE6B,EAAS7B,GAAQG,CAClB,CAKD,OAFA6F,KAAKsc,YAAazgB,GAEXmE,IACR,EAEAsc,YAAa,SAAUzgB,GACtB,IAAI7B,EAEJ,IAAMA,KAAO6B,EACZmE,KAAKuX,WAAYvd,EAAK6B,EAAS7B,IAGhC,OAAOgG,IACR,EAEAuX,WAAY,SAAUvd,EAAKG,GAW1B,MAVa,YAARH,GACJgG,KAAKuc,kBAAmBpiB,GAGzB6F,KAAKnE,QAAS7B,GAAQG,EAET,aAARH,GACJgG,KAAKgc,mBAAoB7hB,GAGnB6F,IACR,EAEAuc,kBAAmB,SAAUpiB,GAC5B,IAAIqiB,EAAUnb,EAAUob,EAExB,IAAMD,KAAYriB,EACjBsiB,EAAkBzc,KAAK0b,qBAAsBc,GACxCriB,EAAOqiB,KAAexc,KAAKnE,QAAQsf,QAASqB,IAC9CC,GACAA,EAAgB7U,SAQnBvG,EAAWjH,EAAGqiB,EAAgBrc,OAC9BJ,KAAKkc,aAAcO,EAAiBD,GAMpCnb,EAASqb,SAAU1c,KAAK2c,SAAU,CACjC/iB,QAASyH,EACTub,KAAMJ,EACNrB,QAAShhB,EACT4L,KAAK,KAGR,EAEAiW,mBAAoB,SAAU7hB,GAC7B6F,KAAK6c,aAAc7c,KAAKgG,SAAUhG,KAAKqa,eAAiB,YAAa,OAAQlgB,GAGxEA,IACJ6F,KAAKkc,aAAclc,KAAKwb,UAAW,KAAM,kBACzCxb,KAAKkc,aAAclc,KAAKyb,UAAW,KAAM,kBAE3C,EAEAqB,OAAQ,WACP,OAAO9c,KAAKsc,YAAa,CAAEhb,UAAU,GACtC,EAEAyb,QAAS,WACR,OAAO/c,KAAKsc,YAAa,CAAEhb,UAAU,GACtC,EAEAqb,SAAU,SAAU9gB,GACnB,IAAImhB,EAAO,GACPzW,EAAOvG,KAOX,SAASid,IACR,IAAIC,EAAc,GAElBrhB,EAAQjC,QAAQiN,MAAM,SAAUuI,EAAGxV,GAClBQ,EAAEuH,IAAK4E,EAAKmV,sBAAsB,SAAUra,GAC3D,OAAOA,CACR,IACE8b,MAAM,SAAU9b,GAChB,OAAOA,EAAS8S,GAAIva,EACrB,KAGAsjB,EAAYzb,KAAM7H,EAEpB,IAEA2M,EAAKsQ,IAAKzc,EAAG8iB,GAAe,CAC3BlE,OAAQ,0BAEV,CAEA,SAASoE,EAAoBjC,EAASkC,GACrC,IAAIC,EAASxW,EACb,IAAMA,EAAI,EAAGA,EAAIqU,EAAQvT,OAAQd,IAChCwW,EAAU/W,EAAKmV,qBAAsBP,EAASrU,KAAS1M,IAClDyB,EAAQkK,KACZkX,IACAK,EAAUljB,EAAGA,EAAEmjB,WAAYD,EAAQld,MAAMiV,OAAQxZ,EAAQjC,QAAQwG,UAEjEkd,EAAUljB,EAAGkjB,EAAQE,IAAK3hB,EAAQjC,SAAUwG,OAE7CmG,EAAKmV,qBAAsBP,EAASrU,IAAQwW,EAC5CN,EAAKvb,KAAM0Z,EAASrU,IACfuW,GAAexhB,EAAQsf,QAASA,EAASrU,KAC7CkW,EAAKvb,KAAM5F,EAAQsf,QAASA,EAASrU,IAGxC,CASA,OAnDAjL,EAAUzB,EAAEuN,OAAQ,CACnB/N,QAASoG,KAAKpG,QACduhB,QAASnb,KAAKnE,QAAQsf,SAAW,CAAC,GAChCtf,IAyCU+gB,MACZQ,EAAoBvhB,EAAQ+gB,KAAK7e,MAAO,SAAY,IAAI,GAEpDlC,EAAQ4hB,OACZL,EAAoBvhB,EAAQ4hB,MAAM1f,MAAO,SAAY,IAG/Cif,EAAKnb,KAAM,IACnB,EAEA6b,uBAAwB,SAAUpe,GACjC,IAAIiH,EAAOvG,KACX5F,EAAEyM,KAAMN,EAAKmV,sBAAsB,SAAU1hB,EAAKG,IACN,IAAtCC,EAAEiP,QAAS/J,EAAMoB,OAAQvG,KAC7BoM,EAAKmV,qBAAsB1hB,GAAQI,EAAGD,EAAMqjB,IAAKle,EAAMoB,QAASN,OAElE,IAEAJ,KAAKqX,KAAMjd,EAAGkF,EAAMoB,QACrB,EAEAwb,aAAc,SAAUtiB,EAASgjB,EAAMa,GACtC,OAAOzd,KAAK6c,aAAcjjB,EAASgjB,EAAMa,GAAO,EACjD,EAEAE,UAAW,SAAU/jB,EAASgjB,EAAMa,GACnC,OAAOzd,KAAK6c,aAAcjjB,EAASgjB,EAAMa,GAAO,EACjD,EAEAZ,aAAc,SAAUjjB,EAASgjB,EAAMa,EAAO1X,GAC7CA,EAAuB,mBAARA,EAAsBA,EAAM0X,EAC3C,IAAIzK,EAA6B,kBAAZpZ,GAAoC,OAAZA,EAC5CiC,EAAU,CACT4hB,MAAOzK,EAAQ4J,EAAOa,EACtBb,KAAM5J,EAAQpZ,EAAUgjB,EACxBhjB,QAASoZ,EAAQhT,KAAKpG,QAAUA,EAChCmM,IAAKA,GAGP,OADAlK,EAAQjC,QAAQgkB,YAAa5d,KAAK2c,SAAU9gB,GAAWkK,GAChD/F,IACR,EAEA6W,IAAK,SAAUgH,EAAuBjkB,EAASkkB,GAC9C,IAAIC,EACAhD,EAAW/a,KAGuB,mBAA1B6d,IACXC,EAAWlkB,EACXA,EAAUikB,EACVA,GAAwB,GAInBC,GAKLlkB,EAAUmkB,EAAkB3jB,EAAGR,GAC/BoG,KAAKub,SAAWvb,KAAKub,SAASxV,IAAKnM,KALnCkkB,EAAWlkB,EACXA,EAAUoG,KAAKpG,QACfmkB,EAAkB/d,KAAKgG,UAMxB5L,EAAEyM,KAAMiX,GAAU,SAAUxe,EAAOyB,GAClC,SAASid,IAKR,GAAMH,IAC4B,IAA9B9C,EAASlf,QAAQyF,WACnBlH,EAAG4F,MAAOie,SAAU,qBAGtB,OAA4B,kBAAZld,EAAuBga,EAAUha,GAAYA,GAC3D+L,MAAOiO,EAAUhO,UACpB,CAGwB,kBAAZhM,IACXid,EAAaE,KAAOnd,EAAQmd,KAC3Bnd,EAAQmd,MAAQF,EAAaE,MAAQ9jB,EAAE8jB,QAGzC,IAAIngB,EAAQuB,EAAMvB,MAAO,sBACrBogB,EAAYpgB,EAAO,GAAMgd,EAASO,eAClCnjB,EAAW4F,EAAO,GAEjB5F,EACJ4lB,EAAgBlP,GAAIsP,EAAWhmB,EAAU6lB,GAEzCpkB,EAAQiV,GAAIsP,EAAWH,EAEzB,GACD,EAEA3G,KAAM,SAAUzd,EAASukB,GACxBA,GAAcA,GAAa,IAAKzR,MAAO,KAAM7K,KAAM7B,KAAKsb,eAAiB,KACxEtb,KAAKsb,eACN1hB,EAAQoV,IAAKmP,GAGbne,KAAKub,SAAWnhB,EAAG4F,KAAKub,SAASiC,IAAK5jB,GAAUwG,OAChDJ,KAAKyb,UAAYrhB,EAAG4F,KAAKyb,UAAU+B,IAAK5jB,GAAUwG,OAClDJ,KAAKwb,UAAYphB,EAAG4F,KAAKwb,UAAUgC,IAAK5jB,GAAUwG,MACnD,EAEAge,OAAQ,SAAUrd,EAASsd,GAC1B,SAASL,IACR,OAA4B,kBAAZjd,EAAuBga,EAAUha,GAAYA,GAC3D+L,MAAOiO,EAAUhO,UACpB,CACA,IAAIgO,EAAW/a,KACf,OAAOuF,WAAYyY,EAAcK,GAAS,EAC3C,EAEAC,WAAY,SAAU1kB,GACrBoG,KAAKwb,UAAYxb,KAAKwb,UAAUzV,IAAKnM,GACrCoG,KAAK6W,IAAKjd,EAAS,CAClB2kB,WAAY,SAAUjf,GACrBU,KAAK2d,UAAWvjB,EAAGkF,EAAMkf,eAAiB,KAAM,iBACjD,EACAC,WAAY,SAAUnf,GACrBU,KAAKkc,aAAc9hB,EAAGkF,EAAMkf,eAAiB,KAAM,iBACpD,GAEF,EAEAE,WAAY,SAAU9kB,GACrBoG,KAAKyb,UAAYzb,KAAKyb,UAAU1V,IAAKnM,GACrCoG,KAAK6W,IAAKjd,EAAS,CAClB+kB,QAAS,SAAUrf,GAClBU,KAAK2d,UAAWvjB,EAAGkF,EAAMkf,eAAiB,KAAM,iBACjD,EACAI,SAAU,SAAUtf,GACnBU,KAAKkc,aAAc9hB,EAAGkF,EAAMkf,eAAiB,KAAM,iBACpD,GAEF,EAEA5X,SAAU,SAAUxJ,EAAMkC,EAAOtC,GAChC,IAAI8M,EAAM6O,EACNvW,EAAWpC,KAAKnE,QAASuB,GAc7B,GAZAJ,EAAOA,GAAQ,CAAC,GAChBsC,EAAQlF,EAAE0F,MAAOR,IACXlC,MAASA,IAAS4C,KAAKma,kBAC5B/c,EACA4C,KAAKma,kBAAoB/c,GAAO8a,cAIjC5Y,EAAMoB,OAASV,KAAKpG,QAAS,GAG7B+e,EAAOrZ,EAAM8J,cAEZ,IAAMU,KAAQ6O,EACL7O,KAAQxK,IACfA,EAAOwK,GAAS6O,EAAM7O,IAMzB,OADA9J,KAAKpG,QAAQ6a,QAASnV,EAAOtC,KACC,oBAAboF,IACkD,IAAlEA,EAAS0K,MAAO9M,KAAKpG,QAAS,GAAK,CAAE0F,GAAQ+V,OAAQrY,KACrDsC,EAAM2M,qBACR,GAGD7R,EAAEyM,KAAM,CAAEgY,KAAM,SAAUC,KAAM,YAAa,SAAUnb,EAAQob,GAC9D3kB,EAAEqf,OAAOpgB,UAAW,IAAMsK,GAAW,SAAU/J,EAASiC,EAASuG,GAKhE,IAAI4c,EAJoB,kBAAZnjB,IACXA,EAAU,CAAEojB,OAAQpjB,IAIrB,IAAIqjB,EAAcrjB,GAEL,IAAZA,GAAuC,kBAAZA,EAC1BkjB,EACAljB,EAAQojB,QAAUF,EAHnBpb,EAMuB,kBADxB9H,EAAUA,GAAW,CAAC,GAErBA,EAAU,CAAEsjB,SAAUtjB,IACC,IAAZA,IACXA,EAAU,CAAC,GAGZmjB,GAAc5kB,EAAEglB,cAAevjB,GAC/BA,EAAQa,SAAW0F,EAEdvG,EAAQwiB,OACZzkB,EAAQykB,MAAOxiB,EAAQwiB,OAGnBW,GAAc5kB,EAAEilB,SAAWjlB,EAAEilB,QAAQJ,OAAQC,GACjDtlB,EAAS+J,GAAU9H,GACRqjB,IAAevb,GAAU/J,EAASslB,GAC7CtlB,EAASslB,GAAcrjB,EAAQsjB,SAAUtjB,EAAQyjB,OAAQld,GAEzDxI,EAAQ2lB,OAAO,SAAUC,GACxBplB,EAAG4F,MAAQ2D,KACNvB,GACJA,EAASvI,KAAMD,EAAS,IAEzB4lB,GACD,GAEF,CACD,IAEOplB,EAAE4L,MAET,OA9tB4C,2DAM1C,CAZF,0BCLA,SAAW5L,EAAGH,GAEd,IAAIohB,EAAO,EACV/gB,EAAQD,MAAMhB,UAAUiB,MACxBmlB,EAAarlB,EAAEsa,UAChBta,EAAEsa,UAAY,SAAUkE,GACvB,IAAM,IAAWE,EAAPhS,EAAI,EAA8B,OAApBgS,EAAOF,EAAM9R,IAAaA,IACjD,IACC1M,EAAG0e,GAAOG,eAAgB,SAE3B,CAAE,MAAO/Z,GAAK,CAEfugB,EAAY7G,EACb,EAEAxe,EAAE4L,OAAS,SAAUzF,EAAM2Y,EAAM7f,GAChC,IAAImgB,EAAUL,EAAqBC,EAAaC,EAG/CC,EAAmB,CAAC,EACpBC,EAAYhZ,EAAKmM,MAAO,KAAO,GAEhCnM,EAAOA,EAAKmM,MAAO,KAAO,GAC1B8M,EAAWD,EAAY,IAAMhZ,EAEvBlH,IACLA,EAAY6f,EACZA,EAAO9e,EAAEqf,QAIVrf,EAAEsf,KAAM,KAAOF,EAAStB,eAAkB,SAAUY,GACnD,QAAS1e,EAAE4C,KAAM8b,EAAMU,EACxB,EAEApf,EAAGmf,GAAcnf,EAAGmf,IAAe,CAAC,EACpCJ,EAAsB/e,EAAGmf,GAAahZ,GACtC6Y,EAAchf,EAAGmf,GAAahZ,GAAS,SAAU1E,EAASjC,GAEzD,IAAMoG,KAAK4Z,cACV,OAAO,IAAIR,EAAavd,EAASjC,GAK7BmT,UAAUnF,QACd5H,KAAK4Z,cAAe/d,EAASjC,EAE/B,EAEAQ,EAAEuN,OAAQyR,EAAaD,EAAqB,CAC3CZ,QAASlf,EAAUkf,QAGnBsB,OAAQzf,EAAEuN,OAAQ,CAAC,EAAGtO,GAGtBygB,mBAAoB,MAGrBT,EAAgB,IAAIH,GAINrd,QAAUzB,EAAE4L,OAAO2B,OAAQ,CAAC,EAAG0R,EAAcxd,SAC3DzB,EAAEyM,KAAMxN,GAAW,SAAUyQ,EAAM3P,GAKP,IACtB+N,EAGH6R,EARI3f,EAAEslB,WAAYvlB,GAIpBmf,EAAkBxP,IACb5B,EAAS,WACX,OAAOgR,EAAK7f,UAAWyQ,GAAOgD,MAAO9M,KAAM+M,UAC5C,EACAgN,EAAc,SAAU7U,GACvB,OAAOgU,EAAK7f,UAAWyQ,GAAOgD,MAAO9M,KAAMkF,EAC5C,EACM,WACN,IAEC8U,EAFGC,EAAUja,KAAKkI,OAClBgS,EAAela,KAAK+Z,YAWrB,OARA/Z,KAAKkI,OAASA,EACdlI,KAAK+Z,YAAcA,EAEnBC,EAAc7f,EAAM2S,MAAO9M,KAAM+M,WAEjC/M,KAAKkI,OAAS+R,EACdja,KAAK+Z,YAAcG,EAEZF,CACR,GAxBAV,EAAkBxP,GAAS3P,CA0B7B,IACAif,EAAY/f,UAAYe,EAAE4L,OAAO2B,OAAQ0R,EAAe,CAIvDc,kBAAmBhB,EAAsBE,EAAcc,kBAAoB5Z,GACzE+Y,EAAkB,CACpBF,YAAaA,EACbG,UAAWA,EACXa,WAAY7Z,EACZ8Z,eAAgBb,IAOZL,GACJ/e,EAAEyM,KAAMsS,EAAoBW,oBAAoB,SAAUhT,EAAGwT,GAC5D,IAAIC,EAAiBD,EAAMjhB,UAI3Be,EAAE4L,OAAQuU,EAAehB,UAAY,IAAMgB,EAAeH,WAAYhB,EAAakB,EAAMT,OAC1F,WAGOV,EAAoBW,oBAE3BZ,EAAKY,mBAAmBrY,KAAM2X,GAG/Bhf,EAAE4L,OAAOwU,OAAQja,EAAM6Y,EACxB,EAEAhf,EAAE4L,OAAO2B,OAAS,SAAUjH,GAM3B,IALA,IAGC1G,EACAG,EAJGkB,EAAQf,EAAMT,KAAMkT,UAAW,GAClC0N,EAAa,EACbC,EAAcrf,EAAMuM,OAGb6S,EAAaC,EAAaD,IACjC,IAAMzgB,KAAOqB,EAAOof,GACnBtgB,EAAQkB,EAAOof,GAAczgB,GACxBqB,EAAOof,GAAarM,eAAgBpU,IAASG,IAAUF,IAEtDG,EAAEugB,cAAexgB,GACrBuG,EAAQ1G,GAAQI,EAAEugB,cAAeja,EAAQ1G,IACxCI,EAAE4L,OAAO2B,OAAQ,CAAC,EAAGjH,EAAQ1G,GAAOG,GAEpCC,EAAE4L,OAAO2B,OAAQ,CAAC,EAAGxN,GAGtBuG,EAAQ1G,GAAQG,GAKpB,OAAOuG,CACR,EAEAtG,EAAE4L,OAAOwU,OAAS,SAAUja,EAAMqa,GACjC,IAAIpB,EAAWoB,EAAOvhB,UAAUghB,gBAAkB9Z,EAClDnG,EAAEoS,GAAIjM,GAAS,SAAU1E,GACxB,IAAIgf,EAAkC,kBAAZhf,EACzBqJ,EAAO5K,EAAMT,KAAMkT,UAAW,GAC9BiN,EAAcha,KAqCf,OAlCAnE,GAAWgf,GAAgB3V,EAAK0C,OAC/BxN,EAAE4L,OAAO2B,OAAOmF,MAAO,KAAM,CAAEjR,GAAUwZ,OAAOnQ,IAChDrJ,EAEIgf,EACJ7a,KAAK6G,MAAK,WACT,IAAIiU,EACHC,EAAW3gB,EAAE4C,KAAMgD,KAAMwZ,GAC1B,OAAMuB,EAIA3gB,EAAEslB,WAAY3E,EAASlf,KAAsC,MAAxBA,EAAQ2L,OAAQ,IAG3DsT,EAAcC,EAAUlf,GAAUiR,MAAOiO,EAAU7V,MAC9B6V,GAAYD,IAAgB7gB,GAChD+f,EAAcc,GAAeA,EAAYrO,OACxCuN,EAAYgB,UAAWF,EAAY1a,OACnC0a,GACM,QAJR,EAHQ1gB,EAAEqC,MAAO,mBAAqBZ,EAAU,SAAW0E,EAAO,oBAJ1DnG,EAAEqC,MAAO,0BAA4B8D,EAA5B,uDACgB1E,EAAU,IAY5C,IAEAmE,KAAK6G,MAAK,WACT,IAAIkU,EAAW3gB,EAAE4C,KAAMgD,KAAMwZ,GACxBuB,EACJA,EAASxZ,OAAQ1F,GAAW,CAAC,GAAIof,QAEjC7gB,EAAE4C,KAAMgD,KAAMwZ,EAAU,IAAIoB,EAAQ/e,EAASmE,MAE/C,IAGMga,CACR,CACD,EAEA5f,EAAEqf,OAAS,WAAoC,EAC/Crf,EAAEqf,OAAOK,mBAAqB,GAE9B1f,EAAEqf,OAAOpgB,UAAY,CACpB+gB,WAAY,SACZD,kBAAmB,GACnBe,eAAgB,QAChBrf,QAAS,CACRyF,UAAU,EAGV8Z,OAAQ,MAETxB,cAAe,SAAU/d,EAASjC,GACjCA,EAAUQ,EAAGR,GAAWoG,KAAKkb,gBAAkBlb,MAAQ,GACvDA,KAAKpG,QAAUQ,EAAGR,GAClBoG,KAAKqb,KAAOA,IACZrb,KAAKsb,eAAiB,IAAMtb,KAAKoa,WAAapa,KAAKqb,KACnDrb,KAAKnE,QAAUzB,EAAE4L,OAAO2B,OAAQ,CAAC,EAChC3H,KAAKnE,QACLmE,KAAK+b,oBACLlgB,GAEDmE,KAAKub,SAAWnhB,IAChB4F,KAAKwb,UAAYphB,IACjB4F,KAAKyb,UAAYrhB,IAEZR,IAAYoG,OAChB5F,EAAE4C,KAAMpD,EAASoG,KAAKqa,eAAgBra,MACtCA,KAAK6W,KAAK,EAAM7W,KAAKpG,QAAS,CAC7Bof,OAAQ,SAAU1Z,GACZA,EAAMoB,SAAW9G,GACrBoG,KAAK2b,SAEP,IAED3b,KAAKjH,SAAWqB,EAAGR,EAAQ4K,MAE1B5K,EAAQgiB,cAERhiB,EAAQb,UAAYa,GACrBoG,KAAKX,OAASjF,EAAG4F,KAAKjH,SAAS,GAAG8iB,aAAe7b,KAAKjH,SAAS,GAAG+iB,eAGnE9b,KAAKiI,UACLjI,KAAK4G,SAAU,SAAU,KAAM5G,KAAKic,uBACpCjc,KAAKib,OACN,EACAc,kBAAmB3hB,EAAEoO,KACrByT,oBAAqB7hB,EAAEoO,KACvBP,QAAS7N,EAAEoO,KACXyS,MAAO7gB,EAAEoO,KAETmT,QAAS,WACR3b,KAAKsX,WAGLtX,KAAKpG,QACH+lB,OAAQ3f,KAAKsb,gBAGba,WAAYnc,KAAKoa,YACjB+B,WAAYnc,KAAKqa,gBAGjB8B,WAAY/hB,EAAEwlB,UAAW5f,KAAKqa,iBAChCra,KAAKgG,SACH2Z,OAAQ3f,KAAKsb,gBACbc,WAAY,iBACZyD,YACA7f,KAAKqa,eAALra,+BAIFA,KAAKub,SAASoE,OAAQ3f,KAAKsb,gBAC3Btb,KAAKwb,UAAUqE,YAAa,kBAC5B7f,KAAKyb,UAAUoE,YAAa,iBAC7B,EACAvI,SAAUld,EAAEoO,KAEZxC,OAAQ,WACP,OAAOhG,KAAKpG,OACb,EAEA2H,OAAQ,SAAUvH,EAAKG,GACtB,IACCoS,EACA8P,EACAvV,EAHGjL,EAAU7B,EAKd,GAA0B,IAArB+S,UAAUnF,OAEd,OAAOxN,EAAE4L,OAAO2B,OAAQ,CAAC,EAAG3H,KAAKnE,SAGlC,GAAoB,kBAAR7B,EAKX,GAHA6B,EAAU,CAAC,EACX0Q,EAAQvS,EAAI0S,MAAO,KACnB1S,EAAMuS,EAAMyG,QACPzG,EAAM3E,OAAS,CAEnB,IADAyU,EAAYxgB,EAAS7B,GAAQI,EAAE4L,OAAO2B,OAAQ,CAAC,EAAG3H,KAAKnE,QAAS7B,IAC1D8M,EAAI,EAAGA,EAAIyF,EAAM3E,OAAS,EAAGd,IAClCuV,EAAW9P,EAAOzF,IAAQuV,EAAW9P,EAAOzF,KAAS,CAAC,EACtDuV,EAAYA,EAAW9P,EAAOzF,IAG/B,GADA9M,EAAMuS,EAAMuL,MACP3d,IAAUF,EACd,OAAOoiB,EAAWriB,KAAUC,EAAY,KAAOoiB,EAAWriB,GAE3DqiB,EAAWriB,GAAQG,CACpB,KAAO,CACN,GAAKA,IAAUF,EACd,OAAO+F,KAAKnE,QAAS7B,KAAUC,EAAY,KAAO+F,KAAKnE,QAAS7B,GAEjE6B,EAAS7B,GAAQG,CAClB,CAKD,OAFA6F,KAAKsc,YAAazgB,GAEXmE,IACR,EACAsc,YAAa,SAAUzgB,GACtB,IAAI7B,EAEJ,IAAMA,KAAO6B,EACZmE,KAAKuX,WAAYvd,EAAK6B,EAAS7B,IAGhC,OAAOgG,IACR,EACAuX,WAAY,SAAUvd,EAAKG,GAW1B,OAVA6F,KAAKnE,QAAS7B,GAAQG,EAET,aAARH,IACJgG,KAAKgG,SACH4X,YAAa5d,KAAKqa,eAAiB,gCAAiClgB,GACpEmW,KAAM,gBAAiBnW,GACzB6F,KAAKwb,UAAUqE,YAAa,kBAC5B7f,KAAKyb,UAAUoE,YAAa,mBAGtB7f,IACR,EAEA8c,OAAQ,WACP,OAAO9c,KAAKuX,WAAY,YAAY,EACrC,EACAwF,QAAS,WACR,OAAO/c,KAAKuX,WAAY,YAAY,EACrC,EAEAV,IAAK,SAAUgH,EAAuBjkB,EAASkkB,GAC9C,IAAIC,EACHhD,EAAW/a,KAG0B,mBAA1B6d,IACXC,EAAWlkB,EACXA,EAAUikB,EACVA,GAAwB,GAInBC,GAMLlkB,EAAUmkB,EAAkB3jB,EAAGR,GAC/BoG,KAAKub,SAAWvb,KAAKub,SAASxV,IAAKnM,KANnCkkB,EAAWlkB,EACXA,EAAUoG,KAAKpG,QACfmkB,EAAkB/d,KAAKgG,UAOxB5L,EAAEyM,KAAMiX,GAAU,SAAUxe,EAAOyB,GAClC,SAASid,IAIR,GAAMH,IAC4B,IAA9B9C,EAASlf,QAAQyF,WAClBlH,EAAG4F,MAAOie,SAAU,qBAGvB,OAA4B,kBAAZld,EAAuBga,EAAUha,GAAYA,GAC3D+L,MAAOiO,EAAUhO,UACpB,CAGwB,kBAAZhM,IACXid,EAAaE,KAAOnd,EAAQmd,KAC3Bnd,EAAQmd,MAAQF,EAAaE,MAAQ9jB,EAAE8jB,QAGzC,IAAIngB,EAAQuB,EAAMvB,MAAO,kBACxBogB,EAAYpgB,EAAM,GAAKgd,EAASO,eAChCnjB,EAAW4F,EAAM,GACb5F,EACJ4lB,EAAgBld,SAAU1I,EAAUgmB,EAAWH,GAE/CpkB,EAAQkmB,KAAM3B,EAAWH,EAE3B,GACD,EAEA3G,KAAM,SAAUzd,EAASukB,GACxBA,GAAaA,GAAa,IAAIzR,MAAO,KAAM7K,KAAM7B,KAAKsb,eAAiB,KAAQtb,KAAKsb,eACpF1hB,EAAQ+lB,OAAQxB,GAAY4B,WAAY5B,EACzC,EAEAC,OAAQ,SAAUrd,EAASsd,GAK1B,IAAItD,EAAW/a,KACf,OAAOuF,YALP,WACC,OAA4B,kBAAZxE,EAAuBga,EAAUha,GAAYA,GAC3D+L,MAAOiO,EAAUhO,UACpB,GAEiCsR,GAAS,EAC3C,EAEAC,WAAY,SAAU1kB,GACrBoG,KAAKwb,UAAYxb,KAAKwb,UAAUzV,IAAKnM,GACrCoG,KAAK6W,IAAKjd,EAAS,CAClB2kB,WAAY,SAAUjf,GACrBlF,EAAGkF,EAAMkf,eAAgB9B,SAAU,iBACpC,EACA+B,WAAY,SAAUnf,GACrBlF,EAAGkF,EAAMkf,eAAgBqB,YAAa,iBACvC,GAEF,EAEAnB,WAAY,SAAU9kB,GACrBoG,KAAKyb,UAAYzb,KAAKyb,UAAU1V,IAAKnM,GACrCoG,KAAK6W,IAAKjd,EAAS,CAClB+kB,QAAS,SAAUrf,GAClBlF,EAAGkF,EAAMkf,eAAgB9B,SAAU,iBACpC,EACAkC,SAAU,SAAUtf,GACnBlF,EAAGkF,EAAMkf,eAAgBqB,YAAa,iBACvC,GAEF,EAEAjZ,SAAU,SAAUxJ,EAAMkC,EAAOtC,GAChC,IAAI8M,EAAM6O,EACTvW,EAAWpC,KAAKnE,QAASuB,GAa1B,GAXAJ,EAAOA,GAAQ,CAAC,GAChBsC,EAAQlF,EAAE0F,MAAOR,IACXlC,MAASA,IAAS4C,KAAKma,kBAC5B/c,EACA4C,KAAKma,kBAAoB/c,GAAO8a,cAGjC5Y,EAAMoB,OAASV,KAAKpG,QAAS,GAG7B+e,EAAOrZ,EAAM8J,cAEZ,IAAMU,KAAQ6O,EACL7O,KAAQxK,IACfA,EAAOwK,GAAS6O,EAAM7O,IAMzB,OADA9J,KAAKpG,QAAQ6a,QAASnV,EAAOtC,KACnB5C,EAAEslB,WAAYtd,KACyC,IAAhEA,EAAS0K,MAAO9M,KAAKpG,QAAQ,GAAI,CAAE0F,GAAQ+V,OAAQrY,KACnDsC,EAAM2M,qBACR,GAGD7R,EAAEyM,KAAM,CAAEgY,KAAM,SAAUC,KAAM,YAAa,SAAUnb,EAAQob,GAC9D3kB,EAAEqf,OAAOpgB,UAAW,IAAMsK,GAAW,SAAU/J,EAASiC,EAASuG,GACxC,kBAAZvG,IACXA,EAAU,CAAEojB,OAAQpjB,IAErB,IAAImjB,EACHE,EAAcrjB,GAED,IAAZA,GAAuC,kBAAZA,EAC1BkjB,EACAljB,EAAQojB,QAAUF,EAHnBpb,EAKsB,kBADxB9H,EAAUA,GAAW,CAAC,KAErBA,EAAU,CAAEsjB,SAAUtjB,IAEvBmjB,GAAc5kB,EAAEglB,cAAevjB,GAC/BA,EAAQa,SAAW0F,EACdvG,EAAQwiB,OACZzkB,EAAQykB,MAAOxiB,EAAQwiB,OAEnBW,GAAc5kB,EAAEilB,SAAWjlB,EAAEilB,QAAQJ,OAAQC,GACjDtlB,EAAS+J,GAAU9H,GACRqjB,IAAevb,GAAU/J,EAASslB,GAC7CtlB,EAASslB,GAAcrjB,EAAQsjB,SAAUtjB,EAAQyjB,OAAQld,GAEzDxI,EAAQ2lB,OAAM,SAAUC,GACvBplB,EAAG4F,MAAQ2D,KACNvB,GACJA,EAASvI,KAAMD,EAAS,IAEzB4lB,GACD,GAEF,CACD,GAEC,CA9fD","sources":["webpack://enerfip/./node_modules/@rails/ujs/app/assets/javascripts/rails-ujs.esm.js","webpack://enerfip/./node_modules/blueimp-file-upload/js/jquery.fileupload-process.js","webpack://enerfip/./node_modules/blueimp-file-upload/js/jquery.fileupload-validate.js","webpack://enerfip/./node_modules/blueimp-file-upload/js/jquery.fileupload.js","webpack://enerfip/./node_modules/jquery-ui/ui/version.js","webpack://enerfip/./node_modules/jquery-ui/ui/widget.js","webpack://enerfip/./node_modules/jquery.ui.widget/jquery.ui.widget.js"],"sourcesContent":["/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/javascript\nReleased under the MIT license\n */\nconst linkClickSelector = \"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]\";\n\nconst buttonClickSelector = {\n selector: \"button[data-remote]:not([form]), button[data-confirm]:not([form])\",\n exclude: \"form button\"\n};\n\nconst inputChangeSelector = \"select[data-remote], input[data-remote], textarea[data-remote]\";\n\nconst formSubmitSelector = \"form:not([data-turbo=true])\";\n\nconst formInputClickSelector = \"form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])\";\n\nconst formDisableSelector = \"input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled\";\n\nconst formEnableSelector = \"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled\";\n\nconst fileInputSelector = \"input[name][type=file]:not([disabled])\";\n\nconst linkDisableSelector = \"a[data-disable-with], a[data-disable]\";\n\nconst buttonDisableSelector = \"button[data-remote][data-disable-with], button[data-remote][data-disable]\";\n\nlet nonce = null;\n\nconst loadCSPNonce = () => {\n const metaTag = document.querySelector(\"meta[name=csp-nonce]\");\n return nonce = metaTag && metaTag.content;\n};\n\nconst cspNonce = () => nonce || loadCSPNonce();\n\nconst m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nconst matches = function(element, selector) {\n if (selector.exclude) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n};\n\nconst EXPANDO = \"_ujsData\";\n\nconst getData = (element, key) => element[EXPANDO] ? element[EXPANDO][key] : undefined;\n\nconst setData = function(element, key, value) {\n if (!element[EXPANDO]) {\n element[EXPANDO] = {};\n }\n return element[EXPANDO][key] = value;\n};\n\nconst $ = selector => Array.prototype.slice.call(document.querySelectorAll(selector));\n\nconst isContentEditable = function(element) {\n var isEditable = false;\n do {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n } while (element);\n return isEditable;\n};\n\nconst csrfToken = () => {\n const meta = document.querySelector(\"meta[name=csrf-token]\");\n return meta && meta.content;\n};\n\nconst csrfParam = () => {\n const meta = document.querySelector(\"meta[name=csrf-param]\");\n return meta && meta.content;\n};\n\nconst CSRFProtection = xhr => {\n const token = csrfToken();\n if (token) {\n return xhr.setRequestHeader(\"X-CSRF-Token\", token);\n }\n};\n\nconst refreshCSRFTokens = () => {\n const token = csrfToken();\n const param = csrfParam();\n if (token && param) {\n return $('form input[name=\"' + param + '\"]').forEach((input => input.value = token));\n }\n};\n\nconst AcceptHeaders = {\n \"*\": \"*/*\",\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\",\n script: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n};\n\nconst ajax = options => {\n options = prepareOptions(options);\n var xhr = createXHR(options, (function() {\n const response = processResponse(xhr.response != null ? xhr.response : xhr.responseText, xhr.getResponseHeader(\"Content-Type\"));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : undefined;\n }));\n if (options.beforeSend && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n};\n\nvar prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === \"GET\" && options.data) {\n if (options.url.indexOf(\"?\") < 0) {\n options.url += \"?\" + options.data;\n } else {\n options.url += \"&\" + options.data;\n }\n }\n if (!(options.dataType in AcceptHeaders)) {\n options.dataType = \"*\";\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== \"*\") {\n options.accept += \", */*; q=0.01\";\n }\n return options;\n};\n\nvar createXHR = function(options, done) {\n const xhr = new XMLHttpRequest;\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader(\"Accept\", options.accept);\n if (typeof options.data === \"string\") {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n};\n\nvar processResponse = function(response, type) {\n if (typeof response === \"string\" && typeof type === \"string\") {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n const script = document.createElement(\"script\");\n script.setAttribute(\"nonce\", cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n const parser = new DOMParser;\n type = type.replace(/;.+/, \"\");\n try {\n response = parser.parseFromString(response, type);\n } catch (error1) {}\n }\n }\n return response;\n};\n\nconst href = element => element.href;\n\nconst isCrossDomain = function(url) {\n const originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n const urlAnchor = document.createElement(\"a\");\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === \":\") && !urlAnchor.host || originAnchor.protocol + \"//\" + originAnchor.host === urlAnchor.protocol + \"//\" + urlAnchor.host);\n } catch (e) {\n return true;\n }\n};\n\nlet preventDefault;\n\nlet {CustomEvent: CustomEvent} = window;\n\nif (typeof CustomEvent !== \"function\") {\n CustomEvent = function(event, params) {\n const evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n ({preventDefault: preventDefault} = CustomEvent.prototype);\n CustomEvent.prototype.preventDefault = function() {\n const result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, \"defaultPrevented\", {\n get() {\n return true;\n }\n });\n }\n return result;\n };\n}\n\nconst fire = (obj, name, data) => {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n};\n\nconst stopEverything = e => {\n fire(e.target, \"ujs:everythingStopped\");\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\n\nconst delegate = (element, selector, eventType, handler) => element.addEventListener(eventType, (function(e) {\n let {target: target} = e;\n while (!!(target instanceof Element) && !matches(target, selector)) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n}));\n\nconst toArray = e => Array.prototype.slice.call(e);\n\nconst serializeElement = (element, additionalParam) => {\n let inputs = [ element ];\n if (matches(element, \"form\")) {\n inputs = toArray(element.elements);\n }\n const params = [];\n inputs.forEach((function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, \"fieldset[disabled] *\")) {\n return;\n }\n if (matches(input, \"select\")) {\n toArray(input.options).forEach((function(option) {\n if (option.selected) {\n params.push({\n name: input.name,\n value: option.value\n });\n }\n }));\n } else if (input.checked || [ \"radio\", \"checkbox\", \"submit\" ].indexOf(input.type) === -1) {\n params.push({\n name: input.name,\n value: input.value\n });\n }\n }));\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map((function(param) {\n if (param.name) {\n return `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`;\n } else {\n return param;\n }\n })).join(\"&\");\n};\n\nconst formElements = (form, selector) => {\n if (matches(form, \"form\")) {\n return toArray(form.elements).filter((el => matches(el, selector)));\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n};\n\nconst handleConfirmWithRails = rails => function(e) {\n if (!allowAction(this, rails)) {\n stopEverything(e);\n }\n};\n\nconst confirm = (message, element) => window.confirm(message);\n\nvar allowAction = function(element, rails) {\n let callback;\n const message = element.getAttribute(\"data-confirm\");\n if (!message) {\n return true;\n }\n let answer = false;\n if (fire(element, \"confirm\")) {\n try {\n answer = rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, \"confirm:complete\", [ answer ]);\n }\n return answer && callback;\n};\n\nconst handleDisabledElement = function(e) {\n const element = this;\n if (element.disabled) {\n stopEverything(e);\n }\n};\n\nconst enableElement = e => {\n let element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return enableFormElements(element);\n }\n};\n\nconst disableElement = e => {\n const element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return disableFormElements(element);\n }\n};\n\nvar disableLinkElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableLinkElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, \"ujs:enable-with\", null);\n }\n element.removeEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar disableFormElements = form => formElements(form, formDisableSelector).forEach(disableFormElement);\n\nvar disableFormElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n if (matches(element, \"button\")) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, \"ujs:enable-with\", element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableFormElements = form => formElements(form, formEnableSelector).forEach((element => enableFormElement(element)));\n\nvar enableFormElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n if (matches(element, \"button\")) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, \"ujs:enable-with\", null);\n }\n element.disabled = false;\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar isXhrRedirect = function(event) {\n const xhr = event.detail ? event.detail[0] : undefined;\n return xhr && xhr.getResponseHeader(\"X-Xhr-Redirect\");\n};\n\nconst handleMethodWithRails = rails => function(e) {\n const link = this;\n const method = link.getAttribute(\"data-method\");\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n const href = rails.href(link);\n const csrfToken$1 = csrfToken();\n const csrfParam$1 = csrfParam();\n const form = document.createElement(\"form\");\n let formContent = ``;\n if (csrfParam$1 && csrfToken$1 && !isCrossDomain(href)) {\n formContent += ``;\n }\n formContent += '';\n form.method = \"post\";\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = \"none\";\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n stopEverything(e);\n};\n\nconst isRemote = function(element) {\n const value = element.getAttribute(\"data-remote\");\n return value != null && value !== \"false\";\n};\n\nconst handleRemoteWithRails = rails => function(e) {\n let data, method, url;\n const element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, \"ajax:before\")) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n const withCredentials = element.getAttribute(\"data-with-credentials\");\n const dataType = element.getAttribute(\"data-type\") || \"script\";\n if (matches(element, formSubmitSelector)) {\n const button = getData(element, \"ujs:submit-button\");\n method = getData(element, \"ujs:submit-button-formmethod\") || element.getAttribute(\"method\") || \"get\";\n url = getData(element, \"ujs:submit-button-formaction\") || element.getAttribute(\"action\") || location.href;\n if (method.toUpperCase() === \"GET\") {\n url = url.replace(/\\?.*$/, \"\");\n }\n if (element.enctype === \"multipart/form-data\") {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, \"ujs:submit-button\", null);\n setData(element, \"ujs:submit-button-formmethod\", null);\n setData(element, \"ujs:submit-button-formaction\", null);\n } else if (matches(element, buttonClickSelector) || matches(element, inputChangeSelector)) {\n method = element.getAttribute(\"data-method\");\n url = element.getAttribute(\"data-url\");\n data = serializeElement(element, element.getAttribute(\"data-params\"));\n } else {\n method = element.getAttribute(\"data-method\");\n url = rails.href(element);\n data = element.getAttribute(\"data-params\");\n }\n ajax({\n type: method || \"GET\",\n url: url,\n data: data,\n dataType: dataType,\n beforeSend(xhr, options) {\n if (fire(element, \"ajax:beforeSend\", [ xhr, options ])) {\n return fire(element, \"ajax:send\", [ xhr ]);\n } else {\n fire(element, \"ajax:stopped\");\n return false;\n }\n },\n success(...args) {\n return fire(element, \"ajax:success\", args);\n },\n error(...args) {\n return fire(element, \"ajax:error\", args);\n },\n complete(...args) {\n return fire(element, \"ajax:complete\", args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== \"false\"\n });\n stopEverything(e);\n};\n\nconst formSubmitButtonClick = function(e) {\n const button = this;\n const {form: form} = button;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, \"ujs:submit-button\", {\n name: button.name,\n value: button.value\n });\n }\n setData(form, \"ujs:formnovalidate-button\", button.formNoValidate);\n setData(form, \"ujs:submit-button-formaction\", button.getAttribute(\"formaction\"));\n return setData(form, \"ujs:submit-button-formmethod\", button.getAttribute(\"formmethod\"));\n};\n\nconst preventInsignificantClick = function(e) {\n const link = this;\n const method = (link.getAttribute(\"data-method\") || \"GET\").toUpperCase();\n const data = link.getAttribute(\"data-params\");\n const metaClick = e.metaKey || e.ctrlKey;\n const insignificantMetaClick = metaClick && method === \"GET\" && !data;\n const nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n e.stopImmediatePropagation();\n }\n};\n\nconst Rails = {\n $: $,\n ajax: ajax,\n buttonClickSelector: buttonClickSelector,\n buttonDisableSelector: buttonDisableSelector,\n confirm: confirm,\n cspNonce: cspNonce,\n csrfToken: csrfToken,\n csrfParam: csrfParam,\n CSRFProtection: CSRFProtection,\n delegate: delegate,\n disableElement: disableElement,\n enableElement: enableElement,\n fileInputSelector: fileInputSelector,\n fire: fire,\n formElements: formElements,\n formEnableSelector: formEnableSelector,\n formDisableSelector: formDisableSelector,\n formInputClickSelector: formInputClickSelector,\n formSubmitButtonClick: formSubmitButtonClick,\n formSubmitSelector: formSubmitSelector,\n getData: getData,\n handleDisabledElement: handleDisabledElement,\n href: href,\n inputChangeSelector: inputChangeSelector,\n isCrossDomain: isCrossDomain,\n linkClickSelector: linkClickSelector,\n linkDisableSelector: linkDisableSelector,\n loadCSPNonce: loadCSPNonce,\n matches: matches,\n preventInsignificantClick: preventInsignificantClick,\n refreshCSRFTokens: refreshCSRFTokens,\n serializeElement: serializeElement,\n setData: setData,\n stopEverything: stopEverything\n};\n\nconst handleConfirm = handleConfirmWithRails(Rails);\n\nRails.handleConfirm = handleConfirm;\n\nconst handleMethod = handleMethodWithRails(Rails);\n\nRails.handleMethod = handleMethod;\n\nconst handleRemote = handleRemoteWithRails(Rails);\n\nRails.handleRemote = handleRemote;\n\nconst start = function() {\n if (window._rails_loaded) {\n throw new Error(\"rails-ujs has already been loaded!\");\n }\n window.addEventListener(\"pageshow\", (function() {\n $(formEnableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n $(linkDisableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n }));\n delegate(document, linkDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, linkDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, linkClickSelector, \"click\", preventInsignificantClick);\n delegate(document, linkClickSelector, \"click\", handleDisabledElement);\n delegate(document, linkClickSelector, \"click\", handleConfirm);\n delegate(document, linkClickSelector, \"click\", disableElement);\n delegate(document, linkClickSelector, \"click\", handleRemote);\n delegate(document, linkClickSelector, \"click\", handleMethod);\n delegate(document, buttonClickSelector, \"click\", preventInsignificantClick);\n delegate(document, buttonClickSelector, \"click\", handleDisabledElement);\n delegate(document, buttonClickSelector, \"click\", handleConfirm);\n delegate(document, buttonClickSelector, \"click\", disableElement);\n delegate(document, buttonClickSelector, \"click\", handleRemote);\n delegate(document, inputChangeSelector, \"change\", handleDisabledElement);\n delegate(document, inputChangeSelector, \"change\", handleConfirm);\n delegate(document, inputChangeSelector, \"change\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", handleDisabledElement);\n delegate(document, formSubmitSelector, \"submit\", handleConfirm);\n delegate(document, formSubmitSelector, \"submit\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", (e => setTimeout((() => disableElement(e)), 13)));\n delegate(document, formSubmitSelector, \"ajax:send\", disableElement);\n delegate(document, formSubmitSelector, \"ajax:complete\", enableElement);\n delegate(document, formInputClickSelector, \"click\", preventInsignificantClick);\n delegate(document, formInputClickSelector, \"click\", handleDisabledElement);\n delegate(document, formInputClickSelector, \"click\", handleConfirm);\n delegate(document, formInputClickSelector, \"click\", formSubmitButtonClick);\n document.addEventListener(\"DOMContentLoaded\", refreshCSRFTokens);\n document.addEventListener(\"DOMContentLoaded\", loadCSPNonce);\n return window._rails_loaded = true;\n};\n\nRails.start = start;\n\nif (typeof jQuery !== \"undefined\" && jQuery && jQuery.ajax) {\n if (jQuery.rails) {\n throw new Error(\"If you load both jquery_ujs and rails-ujs, use rails-ujs only.\");\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter((function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n }));\n}\n\nexport { Rails as default };\n","/*\n * jQuery File Upload Processing Plugin\n * https://github.com/blueimp/jQuery-File-Upload\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, require */\n\n(function (factory) {\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['jquery', './jquery.fileupload'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS:\n factory(require('jquery'), require('./jquery.fileupload'));\n } else {\n // Browser globals:\n factory(window.jQuery);\n }\n})(function ($) {\n 'use strict';\n\n var originalAdd = $.blueimp.fileupload.prototype.options.add;\n\n // The File Upload Processing plugin extends the fileupload widget\n // with file processing functionality:\n $.widget('blueimp.fileupload', $.blueimp.fileupload, {\n options: {\n // The list of processing actions:\n processQueue: [\n /*\n {\n action: 'log',\n type: 'debug'\n }\n */\n ],\n add: function (e, data) {\n var $this = $(this);\n data.process(function () {\n return $this.fileupload('process', data);\n });\n originalAdd.call(this, e, data);\n }\n },\n\n processActions: {\n /*\n log: function (data, options) {\n console[options.type](\n 'Processing \"' + data.files[data.index].name + '\"'\n );\n }\n */\n },\n\n _processFile: function (data, originalData) {\n var that = this,\n // eslint-disable-next-line new-cap\n dfd = $.Deferred().resolveWith(that, [data]),\n chain = dfd.promise();\n this._trigger('process', null, data);\n $.each(data.processQueue, function (i, settings) {\n var func = function (data) {\n if (originalData.errorThrown) {\n // eslint-disable-next-line new-cap\n return $.Deferred().rejectWith(that, [originalData]).promise();\n }\n return that.processActions[settings.action].call(\n that,\n data,\n settings\n );\n };\n chain = chain[that._promisePipe](func, settings.always && func);\n });\n chain\n .done(function () {\n that._trigger('processdone', null, data);\n that._trigger('processalways', null, data);\n })\n .fail(function () {\n that._trigger('processfail', null, data);\n that._trigger('processalways', null, data);\n });\n return chain;\n },\n\n // Replaces the settings of each processQueue item that\n // are strings starting with an \"@\", using the remaining\n // substring as key for the option map,\n // e.g. \"@autoUpload\" is replaced with options.autoUpload:\n _transformProcessQueue: function (options) {\n var processQueue = [];\n $.each(options.processQueue, function () {\n var settings = {},\n action = this.action,\n prefix = this.prefix === true ? action : this.prefix;\n $.each(this, function (key, value) {\n if ($.type(value) === 'string' && value.charAt(0) === '@') {\n settings[key] =\n options[\n value.slice(1) ||\n (prefix\n ? prefix + key.charAt(0).toUpperCase() + key.slice(1)\n : key)\n ];\n } else {\n settings[key] = value;\n }\n });\n processQueue.push(settings);\n });\n options.processQueue = processQueue;\n },\n\n // Returns the number of files currently in the processing queue:\n processing: function () {\n return this._processing;\n },\n\n // Processes the files given as files property of the data parameter,\n // returns a Promise object that allows to bind callbacks:\n process: function (data) {\n var that = this,\n options = $.extend({}, this.options, data);\n if (options.processQueue && options.processQueue.length) {\n this._transformProcessQueue(options);\n if (this._processing === 0) {\n this._trigger('processstart');\n }\n $.each(data.files, function (index) {\n var opts = index ? $.extend({}, options) : options,\n func = function () {\n if (data.errorThrown) {\n // eslint-disable-next-line new-cap\n return $.Deferred().rejectWith(that, [data]).promise();\n }\n return that._processFile(opts, data);\n };\n opts.index = index;\n that._processing += 1;\n that._processingQueue = that._processingQueue[that._promisePipe](\n func,\n func\n ).always(function () {\n that._processing -= 1;\n if (that._processing === 0) {\n that._trigger('processstop');\n }\n });\n });\n }\n return this._processingQueue;\n },\n\n _create: function () {\n this._super();\n this._processing = 0;\n // eslint-disable-next-line new-cap\n this._processingQueue = $.Deferred().resolveWith(this).promise();\n }\n });\n});\n","/*\n * jQuery File Upload Validation Plugin\n * https://github.com/blueimp/jQuery-File-Upload\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, require */\n\n(function (factory) {\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['jquery', './jquery.fileupload-process'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS:\n factory(require('jquery'), require('./jquery.fileupload-process'));\n } else {\n // Browser globals:\n factory(window.jQuery);\n }\n})(function ($) {\n 'use strict';\n\n // Append to the default processQueue:\n $.blueimp.fileupload.prototype.options.processQueue.push({\n action: 'validate',\n // Always trigger this action,\n // even if the previous action was rejected:\n always: true,\n // Options taken from the global options map:\n acceptFileTypes: '@',\n maxFileSize: '@',\n minFileSize: '@',\n maxNumberOfFiles: '@',\n disabled: '@disableValidation'\n });\n\n // The File Upload Validation plugin extends the fileupload widget\n // with file validation functionality:\n $.widget('blueimp.fileupload', $.blueimp.fileupload, {\n options: {\n /*\n // The regular expression for allowed file types, matches\n // against either file type or file name:\n acceptFileTypes: /(\\.|\\/)(gif|jpe?g|png)$/i,\n // The maximum allowed file size in bytes:\n maxFileSize: 10000000, // 10 MB\n // The minimum allowed file size in bytes:\n minFileSize: undefined, // No minimal file size\n // The limit of files to be uploaded:\n maxNumberOfFiles: 10,\n */\n\n // Function returning the current number of files,\n // has to be overridden for maxNumberOfFiles validation:\n getNumberOfFiles: $.noop,\n\n // Error and info messages:\n messages: {\n maxNumberOfFiles: 'Maximum number of files exceeded',\n acceptFileTypes: 'File type not allowed',\n maxFileSize: 'File is too large',\n minFileSize: 'File is too small'\n }\n },\n\n processActions: {\n validate: function (data, options) {\n if (options.disabled) {\n return data;\n }\n // eslint-disable-next-line new-cap\n var dfd = $.Deferred(),\n settings = this.options,\n file = data.files[data.index],\n fileSize;\n if (options.minFileSize || options.maxFileSize) {\n fileSize = file.size;\n }\n if (\n $.type(options.maxNumberOfFiles) === 'number' &&\n (settings.getNumberOfFiles() || 0) + data.files.length >\n options.maxNumberOfFiles\n ) {\n file.error = settings.i18n('maxNumberOfFiles');\n } else if (\n options.acceptFileTypes &&\n !(\n options.acceptFileTypes.test(file.type) ||\n options.acceptFileTypes.test(file.name)\n )\n ) {\n file.error = settings.i18n('acceptFileTypes');\n } else if (fileSize > options.maxFileSize) {\n file.error = settings.i18n('maxFileSize');\n } else if (\n $.type(fileSize) === 'number' &&\n fileSize < options.minFileSize\n ) {\n file.error = settings.i18n('minFileSize');\n } else {\n delete file.error;\n }\n if (file.error || data.files.error) {\n data.files.error = true;\n dfd.rejectWith(this, [data]);\n } else {\n dfd.resolveWith(this, [data]);\n }\n return dfd.promise();\n }\n }\n });\n});\n","/*\n * jQuery File Upload Plugin\n * https://github.com/blueimp/jQuery-File-Upload\n *\n * Copyright 2010, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, require */\n/* eslint-disable new-cap */\n\n(function (factory) {\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['jquery', 'jquery-ui/ui/widget'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS:\n factory(require('jquery'), require('./vendor/jquery.ui.widget'));\n } else {\n // Browser globals:\n factory(window.jQuery);\n }\n})(function ($) {\n 'use strict';\n\n // Detect file input support, based on\n // https://viljamis.com/2012/file-upload-support-on-mobile/\n $.support.fileInput = !(\n new RegExp(\n // Handle devices which give false positives for the feature detection:\n '(Android (1\\\\.[0156]|2\\\\.[01]))' +\n '|(Windows Phone (OS 7|8\\\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' +\n '|(w(eb)?OSBrowser)|(webOS)' +\n '|(Kindle/(1\\\\.0|2\\\\.[05]|3\\\\.0))'\n ).test(window.navigator.userAgent) ||\n // Feature detection for all other devices:\n $('').prop('disabled')\n );\n\n // The FileReader API is not actually used, but works as feature detection,\n // as some Safari versions (5?) support XHR file uploads via the FormData API,\n // but not non-multipart XHR file uploads.\n // window.XMLHttpRequestUpload is not available on IE10, so we check for\n // window.ProgressEvent instead to detect XHR2 file upload capability:\n $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader);\n $.support.xhrFormDataFileUpload = !!window.FormData;\n\n // Detect support for Blob slicing (required for chunked uploads):\n $.support.blobSlice =\n window.Blob &&\n (Blob.prototype.slice ||\n Blob.prototype.webkitSlice ||\n Blob.prototype.mozSlice);\n\n /**\n * Helper function to create drag handlers for dragover/dragenter/dragleave\n *\n * @param {string} type Event type\n * @returns {Function} Drag handler\n */\n function getDragHandler(type) {\n var isDragOver = type === 'dragover';\n return function (e) {\n e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;\n var dataTransfer = e.dataTransfer;\n if (\n dataTransfer &&\n $.inArray('Files', dataTransfer.types) !== -1 &&\n this._trigger(type, $.Event(type, { delegatedEvent: e })) !== false\n ) {\n e.preventDefault();\n if (isDragOver) {\n dataTransfer.dropEffect = 'copy';\n }\n }\n };\n }\n\n // The fileupload widget listens for change events on file input fields defined\n // via fileInput setting and paste or drop events of the given dropZone.\n // In addition to the default jQuery Widget methods, the fileupload widget\n // exposes the \"add\" and \"send\" methods, to add or directly send files using\n // the fileupload API.\n // By default, files added via file input selection, paste, drag & drop or\n // \"add\" method are uploaded immediately, but it is possible to override\n // the \"add\" callback option to queue file uploads.\n $.widget('blueimp.fileupload', {\n options: {\n // The drop target element(s), by the default the complete document.\n // Set to null to disable drag & drop support:\n dropZone: $(document),\n // The paste target element(s), by the default undefined.\n // Set to a DOM node or jQuery object to enable file pasting:\n pasteZone: undefined,\n // The file input field(s), that are listened to for change events.\n // If undefined, it is set to the file input fields inside\n // of the widget element on plugin initialization.\n // Set to null to disable the change listener.\n fileInput: undefined,\n // By default, the file input field is replaced with a clone after\n // each input field change event. This is required for iframe transport\n // queues and allows change events to be fired for the same file\n // selection, but can be disabled by setting the following option to false:\n replaceFileInput: true,\n // The parameter name for the file form data (the request argument name).\n // If undefined or empty, the name property of the file input field is\n // used, or \"files[]\" if the file input name property is also empty,\n // can be a string or an array of strings:\n paramName: undefined,\n // By default, each file of a selection is uploaded using an individual\n // request for XHR type uploads. Set to false to upload file\n // selections in one request each:\n singleFileUploads: true,\n // To limit the number of files uploaded with one XHR request,\n // set the following option to an integer greater than 0:\n limitMultiFileUploads: undefined,\n // The following option limits the number of files uploaded with one\n // XHR request to keep the request size under or equal to the defined\n // limit in bytes:\n limitMultiFileUploadSize: undefined,\n // Multipart file uploads add a number of bytes to each uploaded file,\n // therefore the following option adds an overhead for each file used\n // in the limitMultiFileUploadSize configuration:\n limitMultiFileUploadSizeOverhead: 512,\n // Set the following option to true to issue all file upload requests\n // in a sequential order:\n sequentialUploads: false,\n // To limit the number of concurrent uploads,\n // set the following option to an integer greater than 0:\n limitConcurrentUploads: undefined,\n // Set the following option to true to force iframe transport uploads:\n forceIframeTransport: false,\n // Set the following option to the location of a redirect url on the\n // origin server, for cross-domain iframe transport uploads:\n redirect: undefined,\n // The parameter name for the redirect url, sent as part of the form\n // data and set to 'redirect' if this option is empty:\n redirectParamName: undefined,\n // Set the following option to the location of a postMessage window,\n // to enable postMessage transport uploads:\n postMessage: undefined,\n // By default, XHR file uploads are sent as multipart/form-data.\n // The iframe transport is always using multipart/form-data.\n // Set to false to enable non-multipart XHR uploads:\n multipart: true,\n // To upload large files in smaller chunks, set the following option\n // to a preferred maximum chunk size. If set to 0, null or undefined,\n // or the browser does not support the required Blob API, files will\n // be uploaded as a whole.\n maxChunkSize: undefined,\n // When a non-multipart upload or a chunked multipart upload has been\n // aborted, this option can be used to resume the upload by setting\n // it to the size of the already uploaded bytes. This option is most\n // useful when modifying the options object inside of the \"add\" or\n // \"send\" callbacks, as the options are cloned for each file upload.\n uploadedBytes: undefined,\n // By default, failed (abort or error) file uploads are removed from the\n // global progress calculation. Set the following option to false to\n // prevent recalculating the global progress data:\n recalculateProgress: true,\n // Interval in milliseconds to calculate and trigger progress events:\n progressInterval: 100,\n // Interval in milliseconds to calculate progress bitrate:\n bitrateInterval: 500,\n // By default, uploads are started automatically when adding files:\n autoUpload: true,\n // By default, duplicate file names are expected to be handled on\n // the server-side. If this is not possible (e.g. when uploading\n // files directly to Amazon S3), the following option can be set to\n // an empty object or an object mapping existing filenames, e.g.:\n // { \"image.jpg\": true, \"image (1).jpg\": true }\n // If it is set, all files will be uploaded with unique filenames,\n // adding increasing number suffixes if necessary, e.g.:\n // \"image (2).jpg\"\n uniqueFilenames: undefined,\n\n // Error and info messages:\n messages: {\n uploadedBytes: 'Uploaded bytes exceed file size'\n },\n\n // Translation function, gets the message key to be translated\n // and an object with context specific data as arguments:\n i18n: function (message, context) {\n // eslint-disable-next-line no-param-reassign\n message = this.messages[message] || message.toString();\n if (context) {\n $.each(context, function (key, value) {\n // eslint-disable-next-line no-param-reassign\n message = message.replace('{' + key + '}', value);\n });\n }\n return message;\n },\n\n // Additional form data to be sent along with the file uploads can be set\n // using this option, which accepts an array of objects with name and\n // value properties, a function returning such an array, a FormData\n // object (for XHR file uploads), or a simple object.\n // The form of the first fileInput is given as parameter to the function:\n formData: function (form) {\n return form.serializeArray();\n },\n\n // The add callback is invoked as soon as files are added to the fileupload\n // widget (via file input selection, drag & drop, paste or add API call).\n // If the singleFileUploads option is enabled, this callback will be\n // called once for each file in the selection for XHR file uploads, else\n // once for each file selection.\n //\n // The upload starts when the submit method is invoked on the data parameter.\n // The data object contains a files property holding the added files\n // and allows you to override plugin options as well as define ajax settings.\n //\n // Listeners for this callback can also be bound the following way:\n // .on('fileuploadadd', func);\n //\n // data.submit() returns a Promise object and allows to attach additional\n // handlers using jQuery's Deferred callbacks:\n // data.submit().done(func).fail(func).always(func);\n add: function (e, data) {\n if (e.isDefaultPrevented()) {\n return false;\n }\n if (\n data.autoUpload ||\n (data.autoUpload !== false &&\n $(this).fileupload('option', 'autoUpload'))\n ) {\n data.process().done(function () {\n data.submit();\n });\n }\n },\n\n // Other callbacks:\n\n // Callback for the submit event of each file upload:\n // submit: function (e, data) {}, // .on('fileuploadsubmit', func);\n\n // Callback for the start of each file upload request:\n // send: function (e, data) {}, // .on('fileuploadsend', func);\n\n // Callback for successful uploads:\n // done: function (e, data) {}, // .on('fileuploaddone', func);\n\n // Callback for failed (abort or error) uploads:\n // fail: function (e, data) {}, // .on('fileuploadfail', func);\n\n // Callback for completed (success, abort or error) requests:\n // always: function (e, data) {}, // .on('fileuploadalways', func);\n\n // Callback for upload progress events:\n // progress: function (e, data) {}, // .on('fileuploadprogress', func);\n\n // Callback for global upload progress events:\n // progressall: function (e, data) {}, // .on('fileuploadprogressall', func);\n\n // Callback for uploads start, equivalent to the global ajaxStart event:\n // start: function (e) {}, // .on('fileuploadstart', func);\n\n // Callback for uploads stop, equivalent to the global ajaxStop event:\n // stop: function (e) {}, // .on('fileuploadstop', func);\n\n // Callback for change events of the fileInput(s):\n // change: function (e, data) {}, // .on('fileuploadchange', func);\n\n // Callback for paste events to the pasteZone(s):\n // paste: function (e, data) {}, // .on('fileuploadpaste', func);\n\n // Callback for drop events of the dropZone(s):\n // drop: function (e, data) {}, // .on('fileuploaddrop', func);\n\n // Callback for dragover events of the dropZone(s):\n // dragover: function (e) {}, // .on('fileuploaddragover', func);\n\n // Callback before the start of each chunk upload request (before form data initialization):\n // chunkbeforesend: function (e, data) {}, // .on('fileuploadchunkbeforesend', func);\n\n // Callback for the start of each chunk upload request:\n // chunksend: function (e, data) {}, // .on('fileuploadchunksend', func);\n\n // Callback for successful chunk uploads:\n // chunkdone: function (e, data) {}, // .on('fileuploadchunkdone', func);\n\n // Callback for failed (abort or error) chunk uploads:\n // chunkfail: function (e, data) {}, // .on('fileuploadchunkfail', func);\n\n // Callback for completed (success, abort or error) chunk upload requests:\n // chunkalways: function (e, data) {}, // .on('fileuploadchunkalways', func);\n\n // The plugin options are used as settings object for the ajax calls.\n // The following are jQuery ajax settings required for the file uploads:\n processData: false,\n contentType: false,\n cache: false,\n timeout: 0\n },\n\n // jQuery versions before 1.8 require promise.pipe if the return value is\n // used, as promise.then in older versions has a different behavior, see:\n // https://blog.jquery.com/2012/08/09/jquery-1-8-released/\n // https://bugs.jquery.com/ticket/11010\n // https://github.com/blueimp/jQuery-File-Upload/pull/3435\n _promisePipe: (function () {\n var parts = $.fn.jquery.split('.');\n return Number(parts[0]) > 1 || Number(parts[1]) > 7 ? 'then' : 'pipe';\n })(),\n\n // A list of options that require reinitializing event listeners and/or\n // special initialization code:\n _specialOptions: [\n 'fileInput',\n 'dropZone',\n 'pasteZone',\n 'multipart',\n 'forceIframeTransport'\n ],\n\n _blobSlice:\n $.support.blobSlice &&\n function () {\n var slice = this.slice || this.webkitSlice || this.mozSlice;\n return slice.apply(this, arguments);\n },\n\n _BitrateTimer: function () {\n this.timestamp = Date.now ? Date.now() : new Date().getTime();\n this.loaded = 0;\n this.bitrate = 0;\n this.getBitrate = function (now, loaded, interval) {\n var timeDiff = now - this.timestamp;\n if (!this.bitrate || !interval || timeDiff > interval) {\n this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8;\n this.loaded = loaded;\n this.timestamp = now;\n }\n return this.bitrate;\n };\n },\n\n _isXHRUpload: function (options) {\n return (\n !options.forceIframeTransport &&\n ((!options.multipart && $.support.xhrFileUpload) ||\n $.support.xhrFormDataFileUpload)\n );\n },\n\n _getFormData: function (options) {\n var formData;\n if ($.type(options.formData) === 'function') {\n return options.formData(options.form);\n }\n if ($.isArray(options.formData)) {\n return options.formData;\n }\n if ($.type(options.formData) === 'object') {\n formData = [];\n $.each(options.formData, function (name, value) {\n formData.push({ name: name, value: value });\n });\n return formData;\n }\n return [];\n },\n\n _getTotal: function (files) {\n var total = 0;\n $.each(files, function (index, file) {\n total += file.size || 1;\n });\n return total;\n },\n\n _initProgressObject: function (obj) {\n var progress = {\n loaded: 0,\n total: 0,\n bitrate: 0\n };\n if (obj._progress) {\n $.extend(obj._progress, progress);\n } else {\n obj._progress = progress;\n }\n },\n\n _initResponseObject: function (obj) {\n var prop;\n if (obj._response) {\n for (prop in obj._response) {\n if (Object.prototype.hasOwnProperty.call(obj._response, prop)) {\n delete obj._response[prop];\n }\n }\n } else {\n obj._response = {};\n }\n },\n\n _onProgress: function (e, data) {\n if (e.lengthComputable) {\n var now = Date.now ? Date.now() : new Date().getTime(),\n loaded;\n if (\n data._time &&\n data.progressInterval &&\n now - data._time < data.progressInterval &&\n e.loaded !== e.total\n ) {\n return;\n }\n data._time = now;\n loaded =\n Math.floor(\n (e.loaded / e.total) * (data.chunkSize || data._progress.total)\n ) + (data.uploadedBytes || 0);\n // Add the difference from the previously loaded state\n // to the global loaded counter:\n this._progress.loaded += loaded - data._progress.loaded;\n this._progress.bitrate = this._bitrateTimer.getBitrate(\n now,\n this._progress.loaded,\n data.bitrateInterval\n );\n data._progress.loaded = data.loaded = loaded;\n data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate(\n now,\n loaded,\n data.bitrateInterval\n );\n // Trigger a custom progress event with a total data property set\n // to the file size(s) of the current upload and a loaded data\n // property calculated accordingly:\n this._trigger(\n 'progress',\n $.Event('progress', { delegatedEvent: e }),\n data\n );\n // Trigger a global progress event for all current file uploads,\n // including ajax calls queued for sequential file uploads:\n this._trigger(\n 'progressall',\n $.Event('progressall', { delegatedEvent: e }),\n this._progress\n );\n }\n },\n\n _initProgressListener: function (options) {\n var that = this,\n xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();\n // Access to the native XHR object is required to add event listeners\n // for the upload progress event:\n if (xhr.upload) {\n $(xhr.upload).on('progress', function (e) {\n var oe = e.originalEvent;\n // Make sure the progress event properties get copied over:\n e.lengthComputable = oe.lengthComputable;\n e.loaded = oe.loaded;\n e.total = oe.total;\n that._onProgress(e, options);\n });\n options.xhr = function () {\n return xhr;\n };\n }\n },\n\n _deinitProgressListener: function (options) {\n var xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();\n if (xhr.upload) {\n $(xhr.upload).off('progress');\n }\n },\n\n _isInstanceOf: function (type, obj) {\n // Cross-frame instanceof check\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n },\n\n _getUniqueFilename: function (name, map) {\n // eslint-disable-next-line no-param-reassign\n name = String(name);\n if (map[name]) {\n // eslint-disable-next-line no-param-reassign\n name = name.replace(\n /(?: \\(([\\d]+)\\))?(\\.[^.]+)?$/,\n function (_, p1, p2) {\n var index = p1 ? Number(p1) + 1 : 1;\n var ext = p2 || '';\n return ' (' + index + ')' + ext;\n }\n );\n return this._getUniqueFilename(name, map);\n }\n map[name] = true;\n return name;\n },\n\n _initXHRData: function (options) {\n var that = this,\n formData,\n file = options.files[0],\n // Ignore non-multipart setting if not supported:\n multipart = options.multipart || !$.support.xhrFileUpload,\n paramName =\n $.type(options.paramName) === 'array'\n ? options.paramName[0]\n : options.paramName;\n options.headers = $.extend({}, options.headers);\n if (options.contentRange) {\n options.headers['Content-Range'] = options.contentRange;\n }\n if (!multipart || options.blob || !this._isInstanceOf('File', file)) {\n options.headers['Content-Disposition'] =\n 'attachment; filename=\"' +\n encodeURI(file.uploadName || file.name) +\n '\"';\n }\n if (!multipart) {\n options.contentType = file.type || 'application/octet-stream';\n options.data = options.blob || file;\n } else if ($.support.xhrFormDataFileUpload) {\n if (options.postMessage) {\n // window.postMessage does not allow sending FormData\n // objects, so we just add the File/Blob objects to\n // the formData array and let the postMessage window\n // create the FormData object out of this array:\n formData = this._getFormData(options);\n if (options.blob) {\n formData.push({\n name: paramName,\n value: options.blob\n });\n } else {\n $.each(options.files, function (index, file) {\n formData.push({\n name:\n ($.type(options.paramName) === 'array' &&\n options.paramName[index]) ||\n paramName,\n value: file\n });\n });\n }\n } else {\n if (that._isInstanceOf('FormData', options.formData)) {\n formData = options.formData;\n } else {\n formData = new FormData();\n $.each(this._getFormData(options), function (index, field) {\n formData.append(field.name, field.value);\n });\n }\n if (options.blob) {\n formData.append(\n paramName,\n options.blob,\n file.uploadName || file.name\n );\n } else {\n $.each(options.files, function (index, file) {\n // This check allows the tests to run with\n // dummy objects:\n if (\n that._isInstanceOf('File', file) ||\n that._isInstanceOf('Blob', file)\n ) {\n var fileName = file.uploadName || file.name;\n if (options.uniqueFilenames) {\n fileName = that._getUniqueFilename(\n fileName,\n options.uniqueFilenames\n );\n }\n formData.append(\n ($.type(options.paramName) === 'array' &&\n options.paramName[index]) ||\n paramName,\n file,\n fileName\n );\n }\n });\n }\n }\n options.data = formData;\n }\n // Blob reference is not needed anymore, free memory:\n options.blob = null;\n },\n\n _initIframeSettings: function (options) {\n var targetHost = $('').prop('href', options.url).prop('host');\n // Setting the dataType to iframe enables the iframe transport:\n options.dataType = 'iframe ' + (options.dataType || '');\n // The iframe transport accepts a serialized array as form data:\n options.formData = this._getFormData(options);\n // Add redirect url to form data on cross-domain uploads:\n if (options.redirect && targetHost && targetHost !== location.host) {\n options.formData.push({\n name: options.redirectParamName || 'redirect',\n value: options.redirect\n });\n }\n },\n\n _initDataSettings: function (options) {\n if (this._isXHRUpload(options)) {\n if (!this._chunkedUpload(options, true)) {\n if (!options.data) {\n this._initXHRData(options);\n }\n this._initProgressListener(options);\n }\n if (options.postMessage) {\n // Setting the dataType to postmessage enables the\n // postMessage transport:\n options.dataType = 'postmessage ' + (options.dataType || '');\n }\n } else {\n this._initIframeSettings(options);\n }\n },\n\n _getParamName: function (options) {\n var fileInput = $(options.fileInput),\n paramName = options.paramName;\n if (!paramName) {\n paramName = [];\n fileInput.each(function () {\n var input = $(this),\n name = input.prop('name') || 'files[]',\n i = (input.prop('files') || [1]).length;\n while (i) {\n paramName.push(name);\n i -= 1;\n }\n });\n if (!paramName.length) {\n paramName = [fileInput.prop('name') || 'files[]'];\n }\n } else if (!$.isArray(paramName)) {\n paramName = [paramName];\n }\n return paramName;\n },\n\n _initFormSettings: function (options) {\n // Retrieve missing options from the input field and the\n // associated form, if available:\n if (!options.form || !options.form.length) {\n options.form = $(options.fileInput.prop('form'));\n // If the given file input doesn't have an associated form,\n // use the default widget file input's form:\n if (!options.form.length) {\n options.form = $(this.options.fileInput.prop('form'));\n }\n }\n options.paramName = this._getParamName(options);\n if (!options.url) {\n options.url = options.form.prop('action') || location.href;\n }\n // The HTTP request method must be \"POST\" or \"PUT\":\n options.type = (\n options.type ||\n ($.type(options.form.prop('method')) === 'string' &&\n options.form.prop('method')) ||\n ''\n ).toUpperCase();\n if (\n options.type !== 'POST' &&\n options.type !== 'PUT' &&\n options.type !== 'PATCH'\n ) {\n options.type = 'POST';\n }\n if (!options.formAcceptCharset) {\n options.formAcceptCharset = options.form.attr('accept-charset');\n }\n },\n\n _getAJAXSettings: function (data) {\n var options = $.extend({}, this.options, data);\n this._initFormSettings(options);\n this._initDataSettings(options);\n return options;\n },\n\n // jQuery 1.6 doesn't provide .state(),\n // while jQuery 1.8+ removed .isRejected() and .isResolved():\n _getDeferredState: function (deferred) {\n if (deferred.state) {\n return deferred.state();\n }\n if (deferred.isResolved()) {\n return 'resolved';\n }\n if (deferred.isRejected()) {\n return 'rejected';\n }\n return 'pending';\n },\n\n // Maps jqXHR callbacks to the equivalent\n // methods of the given Promise object:\n _enhancePromise: function (promise) {\n promise.success = promise.done;\n promise.error = promise.fail;\n promise.complete = promise.always;\n return promise;\n },\n\n // Creates and returns a Promise object enhanced with\n // the jqXHR methods abort, success, error and complete:\n _getXHRPromise: function (resolveOrReject, context, args) {\n var dfd = $.Deferred(),\n promise = dfd.promise();\n // eslint-disable-next-line no-param-reassign\n context = context || this.options.context || promise;\n if (resolveOrReject === true) {\n dfd.resolveWith(context, args);\n } else if (resolveOrReject === false) {\n dfd.rejectWith(context, args);\n }\n promise.abort = dfd.promise;\n return this._enhancePromise(promise);\n },\n\n // Adds convenience methods to the data callback argument:\n _addConvenienceMethods: function (e, data) {\n var that = this,\n getPromise = function (args) {\n return $.Deferred().resolveWith(that, args).promise();\n };\n data.process = function (resolveFunc, rejectFunc) {\n if (resolveFunc || rejectFunc) {\n data._processQueue = this._processQueue = (this._processQueue ||\n getPromise([this]))\n [that._promisePipe](function () {\n if (data.errorThrown) {\n return $.Deferred().rejectWith(that, [data]).promise();\n }\n return getPromise(arguments);\n })\n [that._promisePipe](resolveFunc, rejectFunc);\n }\n return this._processQueue || getPromise([this]);\n };\n data.submit = function () {\n if (this.state() !== 'pending') {\n data.jqXHR = this.jqXHR =\n that._trigger(\n 'submit',\n $.Event('submit', { delegatedEvent: e }),\n this\n ) !== false && that._onSend(e, this);\n }\n return this.jqXHR || that._getXHRPromise();\n };\n data.abort = function () {\n if (this.jqXHR) {\n return this.jqXHR.abort();\n }\n this.errorThrown = 'abort';\n that._trigger('fail', null, this);\n return that._getXHRPromise(false);\n };\n data.state = function () {\n if (this.jqXHR) {\n return that._getDeferredState(this.jqXHR);\n }\n if (this._processQueue) {\n return that._getDeferredState(this._processQueue);\n }\n };\n data.processing = function () {\n return (\n !this.jqXHR &&\n this._processQueue &&\n that._getDeferredState(this._processQueue) === 'pending'\n );\n };\n data.progress = function () {\n return this._progress;\n };\n data.response = function () {\n return this._response;\n };\n },\n\n // Parses the Range header from the server response\n // and returns the uploaded bytes:\n _getUploadedBytes: function (jqXHR) {\n var range = jqXHR.getResponseHeader('Range'),\n parts = range && range.split('-'),\n upperBytesPos = parts && parts.length > 1 && parseInt(parts[1], 10);\n return upperBytesPos && upperBytesPos + 1;\n },\n\n // Uploads a file in multiple, sequential requests\n // by splitting the file up in multiple blob chunks.\n // If the second parameter is true, only tests if the file\n // should be uploaded in chunks, but does not invoke any\n // upload requests:\n _chunkedUpload: function (options, testOnly) {\n options.uploadedBytes = options.uploadedBytes || 0;\n var that = this,\n file = options.files[0],\n fs = file.size,\n ub = options.uploadedBytes,\n mcs = options.maxChunkSize || fs,\n slice = this._blobSlice,\n dfd = $.Deferred(),\n promise = dfd.promise(),\n jqXHR,\n upload;\n if (\n !(\n this._isXHRUpload(options) &&\n slice &&\n (ub || ($.type(mcs) === 'function' ? mcs(options) : mcs) < fs)\n ) ||\n options.data\n ) {\n return false;\n }\n if (testOnly) {\n return true;\n }\n if (ub >= fs) {\n file.error = options.i18n('uploadedBytes');\n return this._getXHRPromise(false, options.context, [\n null,\n 'error',\n file.error\n ]);\n }\n // The chunk upload method:\n upload = function () {\n // Clone the options object for each chunk upload:\n var o = $.extend({}, options),\n currentLoaded = o._progress.loaded;\n o.blob = slice.call(\n file,\n ub,\n ub + ($.type(mcs) === 'function' ? mcs(o) : mcs),\n file.type\n );\n // Store the current chunk size, as the blob itself\n // will be dereferenced after data processing:\n o.chunkSize = o.blob.size;\n // Expose the chunk bytes position range:\n o.contentRange =\n 'bytes ' + ub + '-' + (ub + o.chunkSize - 1) + '/' + fs;\n // Trigger chunkbeforesend to allow form data to be updated for this chunk\n that._trigger('chunkbeforesend', null, o);\n // Process the upload data (the blob and potential form data):\n that._initXHRData(o);\n // Add progress listeners for this chunk upload:\n that._initProgressListener(o);\n jqXHR = (\n (that._trigger('chunksend', null, o) !== false && $.ajax(o)) ||\n that._getXHRPromise(false, o.context)\n )\n .done(function (result, textStatus, jqXHR) {\n ub = that._getUploadedBytes(jqXHR) || ub + o.chunkSize;\n // Create a progress event if no final progress event\n // with loaded equaling total has been triggered\n // for this chunk:\n if (currentLoaded + o.chunkSize - o._progress.loaded) {\n that._onProgress(\n $.Event('progress', {\n lengthComputable: true,\n loaded: ub - o.uploadedBytes,\n total: ub - o.uploadedBytes\n }),\n o\n );\n }\n options.uploadedBytes = o.uploadedBytes = ub;\n o.result = result;\n o.textStatus = textStatus;\n o.jqXHR = jqXHR;\n that._trigger('chunkdone', null, o);\n that._trigger('chunkalways', null, o);\n if (ub < fs) {\n // File upload not yet complete,\n // continue with the next chunk:\n upload();\n } else {\n dfd.resolveWith(o.context, [result, textStatus, jqXHR]);\n }\n })\n .fail(function (jqXHR, textStatus, errorThrown) {\n o.jqXHR = jqXHR;\n o.textStatus = textStatus;\n o.errorThrown = errorThrown;\n that._trigger('chunkfail', null, o);\n that._trigger('chunkalways', null, o);\n dfd.rejectWith(o.context, [jqXHR, textStatus, errorThrown]);\n })\n .always(function () {\n that._deinitProgressListener(o);\n });\n };\n this._enhancePromise(promise);\n promise.abort = function () {\n return jqXHR.abort();\n };\n upload();\n return promise;\n },\n\n _beforeSend: function (e, data) {\n if (this._active === 0) {\n // the start callback is triggered when an upload starts\n // and no other uploads are currently running,\n // equivalent to the global ajaxStart event:\n this._trigger('start');\n // Set timer for global bitrate progress calculation:\n this._bitrateTimer = new this._BitrateTimer();\n // Reset the global progress values:\n this._progress.loaded = this._progress.total = 0;\n this._progress.bitrate = 0;\n }\n // Make sure the container objects for the .response() and\n // .progress() methods on the data object are available\n // and reset to their initial state:\n this._initResponseObject(data);\n this._initProgressObject(data);\n data._progress.loaded = data.loaded = data.uploadedBytes || 0;\n data._progress.total = data.total = this._getTotal(data.files) || 1;\n data._progress.bitrate = data.bitrate = 0;\n this._active += 1;\n // Initialize the global progress values:\n this._progress.loaded += data.loaded;\n this._progress.total += data.total;\n },\n\n _onDone: function (result, textStatus, jqXHR, options) {\n var total = options._progress.total,\n response = options._response;\n if (options._progress.loaded < total) {\n // Create a progress event if no final progress event\n // with loaded equaling total has been triggered:\n this._onProgress(\n $.Event('progress', {\n lengthComputable: true,\n loaded: total,\n total: total\n }),\n options\n );\n }\n response.result = options.result = result;\n response.textStatus = options.textStatus = textStatus;\n response.jqXHR = options.jqXHR = jqXHR;\n this._trigger('done', null, options);\n },\n\n _onFail: function (jqXHR, textStatus, errorThrown, options) {\n var response = options._response;\n if (options.recalculateProgress) {\n // Remove the failed (error or abort) file upload from\n // the global progress calculation:\n this._progress.loaded -= options._progress.loaded;\n this._progress.total -= options._progress.total;\n }\n response.jqXHR = options.jqXHR = jqXHR;\n response.textStatus = options.textStatus = textStatus;\n response.errorThrown = options.errorThrown = errorThrown;\n this._trigger('fail', null, options);\n },\n\n _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) {\n // jqXHRorResult, textStatus and jqXHRorError are added to the\n // options object via done and fail callbacks\n this._trigger('always', null, options);\n },\n\n _onSend: function (e, data) {\n if (!data.submit) {\n this._addConvenienceMethods(e, data);\n }\n var that = this,\n jqXHR,\n aborted,\n slot,\n pipe,\n options = that._getAJAXSettings(data),\n send = function () {\n that._sending += 1;\n // Set timer for bitrate progress calculation:\n options._bitrateTimer = new that._BitrateTimer();\n jqXHR =\n jqXHR ||\n (\n ((aborted ||\n that._trigger(\n 'send',\n $.Event('send', { delegatedEvent: e }),\n options\n ) === false) &&\n that._getXHRPromise(false, options.context, aborted)) ||\n that._chunkedUpload(options) ||\n $.ajax(options)\n )\n .done(function (result, textStatus, jqXHR) {\n that._onDone(result, textStatus, jqXHR, options);\n })\n .fail(function (jqXHR, textStatus, errorThrown) {\n that._onFail(jqXHR, textStatus, errorThrown, options);\n })\n .always(function (jqXHRorResult, textStatus, jqXHRorError) {\n that._deinitProgressListener(options);\n that._onAlways(\n jqXHRorResult,\n textStatus,\n jqXHRorError,\n options\n );\n that._sending -= 1;\n that._active -= 1;\n if (\n options.limitConcurrentUploads &&\n options.limitConcurrentUploads > that._sending\n ) {\n // Start the next queued upload,\n // that has not been aborted:\n var nextSlot = that._slots.shift();\n while (nextSlot) {\n if (that._getDeferredState(nextSlot) === 'pending') {\n nextSlot.resolve();\n break;\n }\n nextSlot = that._slots.shift();\n }\n }\n if (that._active === 0) {\n // The stop callback is triggered when all uploads have\n // been completed, equivalent to the global ajaxStop event:\n that._trigger('stop');\n }\n });\n return jqXHR;\n };\n this._beforeSend(e, options);\n if (\n this.options.sequentialUploads ||\n (this.options.limitConcurrentUploads &&\n this.options.limitConcurrentUploads <= this._sending)\n ) {\n if (this.options.limitConcurrentUploads > 1) {\n slot = $.Deferred();\n this._slots.push(slot);\n pipe = slot[that._promisePipe](send);\n } else {\n this._sequence = this._sequence[that._promisePipe](send, send);\n pipe = this._sequence;\n }\n // Return the piped Promise object, enhanced with an abort method,\n // which is delegated to the jqXHR object of the current upload,\n // and jqXHR callbacks mapped to the equivalent Promise methods:\n pipe.abort = function () {\n aborted = [undefined, 'abort', 'abort'];\n if (!jqXHR) {\n if (slot) {\n slot.rejectWith(options.context, aborted);\n }\n return send();\n }\n return jqXHR.abort();\n };\n return this._enhancePromise(pipe);\n }\n return send();\n },\n\n _onAdd: function (e, data) {\n var that = this,\n result = true,\n options = $.extend({}, this.options, data),\n files = data.files,\n filesLength = files.length,\n limit = options.limitMultiFileUploads,\n limitSize = options.limitMultiFileUploadSize,\n overhead = options.limitMultiFileUploadSizeOverhead,\n batchSize = 0,\n paramName = this._getParamName(options),\n paramNameSet,\n paramNameSlice,\n fileSet,\n i,\n j = 0;\n if (!filesLength) {\n return false;\n }\n if (limitSize && files[0].size === undefined) {\n limitSize = undefined;\n }\n if (\n !(options.singleFileUploads || limit || limitSize) ||\n !this._isXHRUpload(options)\n ) {\n fileSet = [files];\n paramNameSet = [paramName];\n } else if (!(options.singleFileUploads || limitSize) && limit) {\n fileSet = [];\n paramNameSet = [];\n for (i = 0; i < filesLength; i += limit) {\n fileSet.push(files.slice(i, i + limit));\n paramNameSlice = paramName.slice(i, i + limit);\n if (!paramNameSlice.length) {\n paramNameSlice = paramName;\n }\n paramNameSet.push(paramNameSlice);\n }\n } else if (!options.singleFileUploads && limitSize) {\n fileSet = [];\n paramNameSet = [];\n for (i = 0; i < filesLength; i = i + 1) {\n batchSize += files[i].size + overhead;\n if (\n i + 1 === filesLength ||\n batchSize + files[i + 1].size + overhead > limitSize ||\n (limit && i + 1 - j >= limit)\n ) {\n fileSet.push(files.slice(j, i + 1));\n paramNameSlice = paramName.slice(j, i + 1);\n if (!paramNameSlice.length) {\n paramNameSlice = paramName;\n }\n paramNameSet.push(paramNameSlice);\n j = i + 1;\n batchSize = 0;\n }\n }\n } else {\n paramNameSet = paramName;\n }\n data.originalFiles = files;\n $.each(fileSet || files, function (index, element) {\n var newData = $.extend({}, data);\n newData.files = fileSet ? element : [element];\n newData.paramName = paramNameSet[index];\n that._initResponseObject(newData);\n that._initProgressObject(newData);\n that._addConvenienceMethods(e, newData);\n result = that._trigger(\n 'add',\n $.Event('add', { delegatedEvent: e }),\n newData\n );\n return result;\n });\n return result;\n },\n\n _replaceFileInput: function (data) {\n var input = data.fileInput,\n inputClone = input.clone(true),\n restoreFocus = input.is(document.activeElement);\n // Add a reference for the new cloned file input to the data argument:\n data.fileInputClone = inputClone;\n $('
').append(inputClone)[0].reset();\n // Detaching allows to insert the fileInput on another form\n // without losing the file input value:\n input.after(inputClone).detach();\n // If the fileInput had focus before it was detached,\n // restore focus to the inputClone.\n if (restoreFocus) {\n inputClone.trigger('focus');\n }\n // Avoid memory leaks with the detached file input:\n $.cleanData(input.off('remove'));\n // Replace the original file input element in the fileInput\n // elements set with the clone, which has been copied including\n // event handlers:\n this.options.fileInput = this.options.fileInput.map(function (i, el) {\n if (el === input[0]) {\n return inputClone[0];\n }\n return el;\n });\n // If the widget has been initialized on the file input itself,\n // override this.element with the file input clone:\n if (input[0] === this.element[0]) {\n this.element = inputClone;\n }\n },\n\n _handleFileTreeEntry: function (entry, path) {\n var that = this,\n dfd = $.Deferred(),\n entries = [],\n dirReader,\n errorHandler = function (e) {\n if (e && !e.entry) {\n e.entry = entry;\n }\n // Since $.when returns immediately if one\n // Deferred is rejected, we use resolve instead.\n // This allows valid files and invalid items\n // to be returned together in one set:\n dfd.resolve([e]);\n },\n successHandler = function (entries) {\n that\n ._handleFileTreeEntries(entries, path + entry.name + '/')\n .done(function (files) {\n dfd.resolve(files);\n })\n .fail(errorHandler);\n },\n readEntries = function () {\n dirReader.readEntries(function (results) {\n if (!results.length) {\n successHandler(entries);\n } else {\n entries = entries.concat(results);\n readEntries();\n }\n }, errorHandler);\n };\n // eslint-disable-next-line no-param-reassign\n path = path || '';\n if (entry.isFile) {\n if (entry._file) {\n // Workaround for Chrome bug #149735\n entry._file.relativePath = path;\n dfd.resolve(entry._file);\n } else {\n entry.file(function (file) {\n file.relativePath = path;\n dfd.resolve(file);\n }, errorHandler);\n }\n } else if (entry.isDirectory) {\n dirReader = entry.createReader();\n readEntries();\n } else {\n // Return an empty list for file system items\n // other than files or directories:\n dfd.resolve([]);\n }\n return dfd.promise();\n },\n\n _handleFileTreeEntries: function (entries, path) {\n var that = this;\n return $.when\n .apply(\n $,\n $.map(entries, function (entry) {\n return that._handleFileTreeEntry(entry, path);\n })\n )\n [this._promisePipe](function () {\n return Array.prototype.concat.apply([], arguments);\n });\n },\n\n _getDroppedFiles: function (dataTransfer) {\n // eslint-disable-next-line no-param-reassign\n dataTransfer = dataTransfer || {};\n var items = dataTransfer.items;\n if (\n items &&\n items.length &&\n (items[0].webkitGetAsEntry || items[0].getAsEntry)\n ) {\n return this._handleFileTreeEntries(\n $.map(items, function (item) {\n var entry;\n if (item.webkitGetAsEntry) {\n entry = item.webkitGetAsEntry();\n if (entry) {\n // Workaround for Chrome bug #149735:\n entry._file = item.getAsFile();\n }\n return entry;\n }\n return item.getAsEntry();\n })\n );\n }\n return $.Deferred().resolve($.makeArray(dataTransfer.files)).promise();\n },\n\n _getSingleFileInputFiles: function (fileInput) {\n // eslint-disable-next-line no-param-reassign\n fileInput = $(fileInput);\n var entries = fileInput.prop('entries'),\n files,\n value;\n if (entries && entries.length) {\n return this._handleFileTreeEntries(entries);\n }\n files = $.makeArray(fileInput.prop('files'));\n if (!files.length) {\n value = fileInput.prop('value');\n if (!value) {\n return $.Deferred().resolve([]).promise();\n }\n // If the files property is not available, the browser does not\n // support the File API and we add a pseudo File object with\n // the input value as name with path information removed:\n files = [{ name: value.replace(/^.*\\\\/, '') }];\n } else if (files[0].name === undefined && files[0].fileName) {\n // File normalization for Safari 4 and Firefox 3:\n $.each(files, function (index, file) {\n file.name = file.fileName;\n file.size = file.fileSize;\n });\n }\n return $.Deferred().resolve(files).promise();\n },\n\n _getFileInputFiles: function (fileInput) {\n if (!(fileInput instanceof $) || fileInput.length === 1) {\n return this._getSingleFileInputFiles(fileInput);\n }\n return $.when\n .apply($, $.map(fileInput, this._getSingleFileInputFiles))\n [this._promisePipe](function () {\n return Array.prototype.concat.apply([], arguments);\n });\n },\n\n _onChange: function (e) {\n var that = this,\n data = {\n fileInput: $(e.target),\n form: $(e.target.form)\n };\n this._getFileInputFiles(data.fileInput).always(function (files) {\n data.files = files;\n if (that.options.replaceFileInput) {\n that._replaceFileInput(data);\n }\n if (\n that._trigger(\n 'change',\n $.Event('change', { delegatedEvent: e }),\n data\n ) !== false\n ) {\n that._onAdd(e, data);\n }\n });\n },\n\n _onPaste: function (e) {\n var items =\n e.originalEvent &&\n e.originalEvent.clipboardData &&\n e.originalEvent.clipboardData.items,\n data = { files: [] };\n if (items && items.length) {\n $.each(items, function (index, item) {\n var file = item.getAsFile && item.getAsFile();\n if (file) {\n data.files.push(file);\n }\n });\n if (\n this._trigger(\n 'paste',\n $.Event('paste', { delegatedEvent: e }),\n data\n ) !== false\n ) {\n this._onAdd(e, data);\n }\n }\n },\n\n _onDrop: function (e) {\n e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;\n var that = this,\n dataTransfer = e.dataTransfer,\n data = {};\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {\n e.preventDefault();\n this._getDroppedFiles(dataTransfer).always(function (files) {\n data.files = files;\n if (\n that._trigger(\n 'drop',\n $.Event('drop', { delegatedEvent: e }),\n data\n ) !== false\n ) {\n that._onAdd(e, data);\n }\n });\n }\n },\n\n _onDragOver: getDragHandler('dragover'),\n\n _onDragEnter: getDragHandler('dragenter'),\n\n _onDragLeave: getDragHandler('dragleave'),\n\n _initEventHandlers: function () {\n if (this._isXHRUpload(this.options)) {\n this._on(this.options.dropZone, {\n dragover: this._onDragOver,\n drop: this._onDrop,\n // event.preventDefault() on dragenter is required for IE10+:\n dragenter: this._onDragEnter,\n // dragleave is not required, but added for completeness:\n dragleave: this._onDragLeave\n });\n this._on(this.options.pasteZone, {\n paste: this._onPaste\n });\n }\n if ($.support.fileInput) {\n this._on(this.options.fileInput, {\n change: this._onChange\n });\n }\n },\n\n _destroyEventHandlers: function () {\n this._off(this.options.dropZone, 'dragenter dragleave dragover drop');\n this._off(this.options.pasteZone, 'paste');\n this._off(this.options.fileInput, 'change');\n },\n\n _destroy: function () {\n this._destroyEventHandlers();\n },\n\n _setOption: function (key, value) {\n var reinit = $.inArray(key, this._specialOptions) !== -1;\n if (reinit) {\n this._destroyEventHandlers();\n }\n this._super(key, value);\n if (reinit) {\n this._initSpecialOptions();\n this._initEventHandlers();\n }\n },\n\n _initSpecialOptions: function () {\n var options = this.options;\n if (options.fileInput === undefined) {\n options.fileInput = this.element.is('input[type=\"file\"]')\n ? this.element\n : this.element.find('input[type=\"file\"]');\n } else if (!(options.fileInput instanceof $)) {\n options.fileInput = $(options.fileInput);\n }\n if (!(options.dropZone instanceof $)) {\n options.dropZone = $(options.dropZone);\n }\n if (!(options.pasteZone instanceof $)) {\n options.pasteZone = $(options.pasteZone);\n }\n },\n\n _getRegExp: function (str) {\n var parts = str.split('/'),\n modifiers = parts.pop();\n parts.shift();\n return new RegExp(parts.join('/'), modifiers);\n },\n\n _isRegExpOption: function (key, value) {\n return (\n key !== 'url' &&\n $.type(value) === 'string' &&\n /^\\/.*\\/[igm]{0,3}$/.test(value)\n );\n },\n\n _initDataAttributes: function () {\n var that = this,\n options = this.options,\n data = this.element.data();\n // Initialize options set via HTML5 data-attributes:\n $.each(this.element[0].attributes, function (index, attr) {\n var key = attr.name.toLowerCase(),\n value;\n if (/^data-/.test(key)) {\n // Convert hyphen-ated key to camelCase:\n key = key.slice(5).replace(/-[a-z]/g, function (str) {\n return str.charAt(1).toUpperCase();\n });\n value = data[key];\n if (that._isRegExpOption(key, value)) {\n value = that._getRegExp(value);\n }\n options[key] = value;\n }\n });\n },\n\n _create: function () {\n this._initDataAttributes();\n this._initSpecialOptions();\n this._slots = [];\n this._sequence = this._getXHRPromise(true);\n this._sending = this._active = 0;\n this._initProgressObject(this);\n this._initEventHandlers();\n },\n\n // This method is exposed to the widget API and allows to query\n // the number of active uploads:\n active: function () {\n return this._active;\n },\n\n // This method is exposed to the widget API and allows to query\n // the widget upload progress.\n // It returns an object with loaded, total and bitrate properties\n // for the running uploads:\n progress: function () {\n return this._progress;\n },\n\n // This method is exposed to the widget API and allows adding files\n // using the fileupload API. The data parameter accepts an object which\n // must have a files property and can contain additional options:\n // .fileupload('add', {files: filesList});\n add: function (data) {\n var that = this;\n if (!data || this.options.disabled) {\n return;\n }\n if (data.fileInput && !data.files) {\n this._getFileInputFiles(data.fileInput).always(function (files) {\n data.files = files;\n that._onAdd(null, data);\n });\n } else {\n data.files = $.makeArray(data.files);\n this._onAdd(null, data);\n }\n },\n\n // This method is exposed to the widget API and allows sending files\n // using the fileupload API. The data parameter accepts an object which\n // must have a files or fileInput property and can contain additional options:\n // .fileupload('send', {files: filesList});\n // The method returns a Promise object for the file upload call.\n send: function (data) {\n if (data && !this.options.disabled) {\n if (data.fileInput && !data.files) {\n var that = this,\n dfd = $.Deferred(),\n promise = dfd.promise(),\n jqXHR,\n aborted;\n promise.abort = function () {\n aborted = true;\n if (jqXHR) {\n return jqXHR.abort();\n }\n dfd.reject(null, 'abort', 'abort');\n return promise;\n };\n this._getFileInputFiles(data.fileInput).always(function (files) {\n if (aborted) {\n return;\n }\n if (!files.length) {\n dfd.reject();\n return;\n }\n data.files = files;\n jqXHR = that._onSend(null, data);\n jqXHR.then(\n function (result, textStatus, jqXHR) {\n dfd.resolve(result, textStatus, jqXHR);\n },\n function (jqXHR, textStatus, errorThrown) {\n dfd.reject(jqXHR, textStatus, errorThrown);\n }\n );\n });\n return this._enhancePromise(promise);\n }\n data.files = $.makeArray(data.files);\n if (data.files.length) {\n return this._onSend(null, data);\n }\n }\n return this._getXHRPromise(false, data && data.context);\n }\n });\n});\n","( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.13.2\";\n\n} );\n","/*!\n * jQuery UI Widget 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nvar widgetUuid = 0;\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\n\t\t\t// Only trigger remove when necessary to save time\n\t\t\tevents = $._data( elem, \"events\" );\n\t\t\tif ( events && events.remove ) {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( Array.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this || !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"