${\r\n item.DisplayTitle\r\n }
{"version":3,"file":"custom.min.js","mappings":"mBAAO,MAAMA,EAGA,KA0BAC,EAEI,SAFJA,EAGG,eAHHA,EAIM,oBAJNA,EAKa,SAKbC,EACI,YA2BJC,EACK,sBADLA,EAGO,+BAHPA,EAKE,SAKFC,EACI,YADJA,EAME,SANFA,EAOG,OAQHC,EAAmB,CAC5BC,gBAAiB,cACjBC,iBAAkB,eAClBC,OAAQ,0BACRC,cAAe,iBACfC,aAAc,mBACdC,WAAY,MACZC,eAAgB,cC7BpB,EAnEA,MACEC,WAAAA,CAAYC,GACVC,KAAKC,SAAWC,SAASC,iBAAiBJ,GAEtCC,KAAKC,SAASG,OAAS,GACzBJ,KAAKK,oBAET,CAEAA,kBAAAA,GACEL,KAAKC,SAASK,SAASC,IAC4B,QAA7CA,EAAKC,aAAa,wBAChBC,OAAOC,WDRP,KCSFH,EAAKI,iBAAiB,QAASX,KAAKY,kBAAkBC,KAAKb,KAAMO,IAEV,QAAhDA,EAAKC,aAAa,2BACvBC,OAAOC,WAAazB,GACtBsB,EAAKI,iBAAiB,QAASX,KAAKY,kBAAkBC,KAAKb,KAAMO,IAGnEA,EAAKI,iBAAiB,QAASX,KAAKY,kBAAkBC,KAAKb,KAAMO,GACnE,IAGGP,KAAKC,SAAS,GAAGO,aAAa,iBACjCN,SAASS,iBAAiB,QAASX,KAAKc,mBAAmBD,KAAKb,MAEpE,CAEAY,iBAAAA,CAAkBG,EAAQC,GACxBA,EAAMC,kBACNjB,KAAKkB,gBAAgBH,EACvB,CAEAD,kBAAAA,GACEd,KAAKmB,eACP,CAEAD,eAAAA,CAAgBH,GACdf,KAAKC,SAASK,SAASC,IACrB,MAAMa,EAASb,EAAKc,UAAUC,SAAS,UAEvCf,EAAKc,UAAUE,OAAO,SAAUhB,IAASQ,GAIvB,QAFDA,EAAOP,aAAa,mBAG9BY,GAAUb,EAAKc,UAAUC,SAAS,WACrCf,EAAKiB,mBAAmBC,MAAMC,UAAYnB,EAAKiB,mBAAmBG,aAAe,KACjFpB,EAAKiB,mBAAmBH,UAAUO,IAAI,YAEtCrB,EAAKiB,mBAAmBC,MAAMC,UAAY,KAC1CnB,EAAKiB,mBAAmBH,UAAUQ,OAAO,UACzCtB,EAAKc,UAAUQ,OAAO,WAE1B,GAEJ,CAEAV,aAAAA,GACEnB,KAAKC,SAASK,SAASS,IACrBA,EAAOM,UAAUQ,OAAO,SAAS,GAErC,GCuCF,EArGA,MACI/B,WAAAA,CAAYgC,EAASC,GAAkE,IAApDC,EAAUC,UAAA7B,OAAA,QAAA8B,IAAAD,UAAA,GAAAA,UAAA,GAAG,GAAIE,EAAQF,UAAA7B,OAAA,QAAA8B,IAAAD,UAAA,IAAAA,UAAA,GAAUG,EAAQH,UAAA7B,OAAA,QAAA8B,IAAAD,UAAA,GAAAA,UAAA,GAAG,KAC7EjC,KAAKqC,UAAYnC,SAASoC,cAAcR,GACxC9B,KAAKgC,WAAaA,EAClBhC,KAAKmC,SAAWA,EAChBnC,KAAK+B,aAAeA,EAEpB/B,KAAKoC,SAAWA,EAChBpC,KAAKuC,eAAiB,KACtBvC,KAAKwC,SAAW,KAChBxC,KAAKyC,gBAAkB,KACvBzC,KAAK0C,MACT,CAEAA,IAAAA,GACQ1C,KAAKqC,YACLrC,KAAKyC,gBAAkBvC,SAASyC,eAAe3C,KAAKqC,UAAU7B,aAAa,aAE3ER,KAAKqC,UAAU1B,iBAAiB,QAASX,KAAK4C,cAAc/B,KAAKb,OAE7DA,KAAKyC,kBACLzC,KAAKwC,SAAWxC,KAAKyC,gBAAgBH,cAActC,KAAK+B,gBAI5D/B,KAAKwC,UACLxC,KAAKwC,SAAS7B,iBAAiB,QAASX,KAAK6C,eAAehC,KAAKb,OAIrEA,KAAKuC,eAAiBrC,SAASoC,cAActC,KAAKoC,UAC9CpC,KAAKuC,gBACLvC,KAAKuC,eAAe5B,iBAAiB,QAASX,KAAK8C,cAAcjC,KAAKb,OAG1ES,OAAOE,iBAAiB,cAAc,KACrBF,OAAOsC,SAASC,KACpBC,SAAS,cACdjD,KAAK6C,gBACT,GAIR,CAEAD,aAAAA,CAAcM,GACa,UAAnBlD,KAAKgC,WACDvB,OAAOC,WF5CX,KE6CIV,KAAKmD,oBAAoBD,GAEH,QAAnBlD,KAAKgC,WACRvB,OAAOC,WFnDV,MEoDGV,KAAKmD,oBAAoBD,GAEH,WAAnBlD,KAAKgC,WACRvB,OAAOC,WAAazB,GACpBe,KAAKmD,oBAAoBD,GAG7BlD,KAAKmD,oBAAoBD,EAEjC,CAEAC,mBAAAA,CAAoBC,GACZpD,KAAKmC,UACLiB,EAAQnC,kBAERjB,KAAKyC,kBACLzC,KAAKyC,gBAAgBpB,UAAUO,IAAI,QACnC5B,KAAKyC,gBAAgBpB,UAAUQ,OAAO,UAGtC7B,KAAKuC,iBACLvC,KAAKuC,eAAelB,UAAUO,IAAI,QAClC5B,KAAKqC,UAAUgB,QAAQ,QAAQhC,UAAUO,IAAI,mBAErD,CAEAiB,cAAAA,GACQ7C,KAAKyC,kBACLzC,KAAKyC,gBAAgBpB,UAAUQ,OAAO,QACtC7B,KAAKyC,gBAAgBpB,UAAUO,IAAI,UAEnC5B,KAAKuC,iBAELvC,KAAKuC,eAAelB,UAAUQ,OAAO,QACrC7B,KAAKqC,UAAUgB,QAAQ,QAAQhC,UAAUQ,OAAO,mBAExD,CAEAiB,aAAAA,GACQ9C,KAAKuC,iBACLvC,KAAKyC,gBAAgBpB,UAAUQ,OAAO,QACtC7B,KAAKuC,eAAelB,UAAUQ,OAAO,QACrC7B,KAAKqC,UAAUgB,QAAQ,QAAQhC,UAAUQ,OAAO,mBAExD,GCqMJ,EAzSA,MACE/B,WAAAA,CAAYwD,GA8CV,GA7CAtD,KAAKsD,OAASA,EACdtD,KAAKuD,OAAS,KACdvD,KAAKwD,cAAgBC,SAAShD,OAAOC,WAAa,KAElDV,KAAK0D,YAAc,CACjBC,gBAAgB,EAChBC,UAAU,EACVC,qBAAqB,EACrBC,cAAe9D,KAAKsD,OAAO9C,aAAa,uBAAyB,EACjEuD,aAAc/D,KAAKsD,OAAO9C,aAAa,sBAAwB,EAC/DwD,OAAMhE,KAAKsD,OAAO9C,aAAa,mBAC/ByD,iBAAgBjE,KAAKsD,OAAO9C,aAAa,uBAGzC0D,sBAAqBlE,KAAKsD,OAAO9C,aAAa,6BAM5CR,KAAKsD,OAAO9C,aAAa,iBAC3BR,KAAK0D,YAAYS,OAASnE,KAAKsD,OAAO9C,aAAa,gBAIjDR,KAAKsD,OAAO9C,aAAa,mBAC3BR,KAAK0D,YAAYU,UAAW,GAI1BpE,KAAKsD,OAAO9C,aAAa,sBAC3BR,KAAK0D,YAAYW,MAAQrE,KAAKsD,OAAO9C,aAAa,qBAIhDR,KAAKsD,OAAO9C,aAAa,iBAC3BR,KAAK0D,YAAYY,OAAStE,KAAKsD,OAAO9C,aAAa,eAC/CR,KAAKsD,OAAO9C,aAAa,oBAC3BR,KAAK0D,YAAYa,WAAa,CAC5BC,WAAW,KAMmC,SAAhDxE,KAAKsD,OAAO9C,aAAa,mBAA+B,CAC1D,IAAIiE,EAAkBzE,KAAKsD,OAAO9C,aAAa,wBAC3C,IAAIR,KAAKsD,OAAO9C,aAAa,2BAC7B,GACJR,KAAK0D,YAAYgB,WAAa,CAC5BC,GAAI,GAAGF,uBACPG,WAAW,EACXC,iBAAgB7E,KAAKsD,OAAO9C,aAAa,wBAIgB,SAAvDR,KAAKsD,OAAO9C,aAAa,4BAC3BR,KAAK0D,YAAYgB,WAAWI,aAAe,SAAUC,EAAOC,GACxD,MAAO,gBAAkBA,EAAY,MAAQD,EAAQ,GAAK,SAC9D,EAEJ,CAGA,GAAmD,SAA/C/E,KAAKsD,OAAO9C,aAAa,kBAA8B,CACzD,IAAIyE,EAAiBjF,KAAKsD,OAAO9C,aAAa,uBAC1C,IAAIR,KAAKsD,OAAO9C,aAAa,0BAC7B,GACJR,KAAK0D,YAAYwB,UAAY,CAC3BP,GAAI,GAAGM,sBACPL,WAAW,EAEf,CAGA,GAAI5E,KAAKsD,OAAO9C,aAAa,wBAAyB,CACpD,IAAI2E,EAAiBC,KAAKC,MACxBrF,KAAKsD,OAAO9C,aAAa,yBAW3B,GARAR,KAAK0D,YAAY4B,gBAAkB,CACjCC,OAAQ,EACRC,OAAQL,EAAeK,MACvBC,OAAQN,EAAeM,MACvBC,SAAUP,EAAeO,QACzBC,SAAU,EACVC,cAAc,GAEZ5F,KAAKsD,OAAO9C,aAAa,qBAAsB,CACjD,IAAIqF,EAAa7F,KAAKsD,OAAOnD,iBAAiB,iBAAiBC,OAC3DyF,EAAa,IAEb7F,KAAK0D,YAAYoC,aADfD,EAAa,GAAM,EACWA,EAAa,EAEbA,EAAa,EAAI,GAGvD,CACF,CAGA,GAAoD,SAAhD7F,KAAKsD,OAAO9C,aAAa,mBAA+B,CAC1D,IAAIuF,EAAkB/F,KAAKsD,OAAO9C,aAAa,wBAC3C,IAAIR,KAAKsD,OAAO9C,aAAa,2BAC7B,GACJR,KAAK0D,YAAYsC,WAAa,CAC5BC,OAAQ,GAAGF,wBACXG,OAAQ,GAAGH,wBAEf,CAiDA,GA9CkD,SAA9C/F,KAAKsD,OAAO9C,aAAa,mBAC0B,QAAjDR,KAAKsD,OAAO9C,aAAa,qBAC3BR,KAAK0D,YAAYyC,SAAW,CAC1BC,MAAOpG,KAAKsD,OAAO9C,aAAa,uBAAyB,IACzD6F,sBAAsB,GAGxBrG,KAAK0D,YAAYyC,SAAW,CAC1BC,MAAOpG,KAAKsD,OAAO9C,aAAa,uBAAyB,IACzD6F,sBAAsB,IAM4B,SAApDrG,KAAKsD,OAAO9C,aAAa,yBAC3BR,KAAK0D,YAAYO,gBAAiB,GAIiB,SAAjDjE,KAAKsD,OAAO9C,aAAa,sBAC3BR,KAAK0D,YAAY4C,GAAK,CACpB5D,KAAM6D,IAAuC,IAAtC,UAAEC,EAAS,OAAEC,EAAM,WAAE/B,GAAY6B,EACtCvG,KAAK0G,UAAUF,EAAWC,GAC1BzG,KAAK2G,yBAAyBH,EAAWC,EAAQ/B,EAAW,EAE9DkC,uBAAwBC,IAA2B,IAA1B,UAAEL,EAAS,OAAEC,GAAQI,EAC5C7G,KAAK8G,aAAaN,EAAWC,EAAO,EAEtCM,sBAAuBC,IAIjB,IAJkB,OACtBP,EAAM,WACN/B,EAAU,UACVuC,GACDD,EACChH,KAAK2G,yBAAyBM,EAAWR,EAAQ/B,EAAW,EAE9DwC,yBAA0BC,IAGlB,IAHmB,OACzBV,EAAM,UACNQ,GACCE,EACDnH,KAAK0G,UAAUO,EAAWR,EAAO,IAMnCzG,KAAKsD,OAAO9C,aAAa,oBAAqB,CAChD,IAIIkF,EACAD,EALA2B,EAAgBhC,KAAKC,MACvBrF,KAAKsD,OAAO9C,aAAa,qBAMvB4G,EAAc,OAAWA,EAAc,MAAQ9B,kBACjDG,EACG2B,EAAc,MAAQ9B,gBAAgBG,MAAQ,GAC/CzF,KAAKwD,cACPkC,EACG0B,EAAc,MAAQ9B,gBAAgBI,QAAU,GACjD1F,KAAKwD,cACP4D,EAAc,MAAQ9B,gBAAgBC,OAAS,EAC/C6B,EAAc,MAAQ9B,gBAAgBG,OAASA,EAC/C2B,EAAc,MAAQ9B,gBAAgBI,SAAWA,EACjD0B,EAAc,MAAQ9B,gBAAgBE,OACnC4B,EAAc,MAAQ9B,gBAAgBE,MACzC4B,EAAc,MAAQ9B,gBAAgBK,SAAW,EACjDyB,EAAc,MAAQ9B,gBAAgBM,cAAe,GAGvD5F,KAAK0D,YAAY2D,YAAc,IAC1BD,EAEP,CAGA,GAAIpH,KAAKsD,OAAO9C,aAAa,sBAAuB,CAClD,IAAI8G,EAAiBpH,SAASyC,eAC5B,GAAG3C,KAAKsD,OAAO9C,aAAa,yBAE1B8G,IACFtH,KAAK0D,YAAY6D,OAAS,CACxBhE,OAAQ+D,EAAe/D,QAG7B,CAGIvD,KAAKsD,OAAO9C,aAAa,uBACvBC,OAAOC,WAAa,MACtBV,KAAKwH,aAEExH,KAAKsD,OAAO9C,aAAa,oBAC9BC,OAAOC,WAAa,KACtBV,KAAKwH,aAGPxH,KAAKwH,aAGU,IAAIC,kBAAiB,CAACC,EAAe9D,KACpD,IAAK,IAAI+D,KAAYD,EACnB,GACoB,eAAlBC,EAASC,MACkB,SAA3BD,EAASE,cACT,CACA7H,KAAK8H,qBACL,KACF,CACF,IAKOC,QAAQ7H,SAAS8H,gBADH,CAAEC,YAAY,EAAMC,gBAAiB,CAAC,SAE/D,CAEAxB,SAAAA,CAAU3B,EAAO0B,GACf,IAAI0B,EAAiB1B,EAAO1B,GAAOzC,cAAc,eACjD,GAAI6F,EAAgB,CAClB,IACIC,EAEFA,EADe,UAFDD,EAAe3H,aAAa,mBAIxC,gGACA2H,EAAe3H,aAAa,YAC5B,cAGA,qFAEA2H,EAAe3H,aAAa,YAC5B,gCAEJ2H,EAAeE,UAAYD,CAC7B,CACF,CAEAtB,YAAAA,CAAa/B,EAAO0B,GAClB,IAAI2B,EAAe3B,EAAO1B,GAAOzC,cAAc,eAC3C8F,GACFA,EAAavG,QAEjB,CAEA8E,wBAAAA,CAAyB5B,EAAO0B,EAAQ/B,GACtC,IACI4D,EADc7B,EAAO1B,GACYwD,QAAQC,eAC7C,GAAIF,EAAoB,CACtB,IAAIG,EAAkBH,EAAqB,IAAO,IAC/B5D,EAAWgE,QAAQ3D,GACzBtD,MAAMkH,YAAY,wBAAyBF,EAC1D,CACF,CAEAjB,UAAAA,GAEIxH,KAAKsD,QACLtD,KAAKsD,OAAOsF,UACZ5I,KAAKsD,OAAOsF,SAASxI,OAAS,IAE9BJ,KAAKuD,OAAS,IAAIsF,OAAO7I,KAAKsD,OAAQ,IACjCtD,KAAK0D,cAE2C,QAAjD1D,KAAKsD,OAAO9C,aAAa,uBAC3BR,KAAKsD,OAAO3C,iBAAiB,aAAcK,IACzChB,KAAKsD,OAAOC,OAAO4C,SAAS2C,MAAM,IAEpC9I,KAAKsD,OAAO3C,iBAAiB,cAAeK,IAC1ChB,KAAKsD,OAAOC,OAAO4C,SAAS4C,OAAO,KAI3C,CAEAjB,kBAAAA,GACM9H,KAAKuD,QACPvD,KAAKuD,OAAOyF,UAEdhJ,KAAKwH,YACP,GChPF,EAtDA,MACI1H,WAAAA,CAAYmJ,GAA0B,IAAhBC,EAAMjH,UAAA7B,OAAA,QAAA8B,IAAAD,UAAA,IAAAA,UAAA,GACxBjC,KAAKmJ,YAAcF,EACnBjJ,KAAKiJ,SAAW/I,SAASoC,cAAc2G,GACvCjJ,KAAKoJ,cAAgBlJ,SAASoC,cAAc,GAAGtC,KAAKmJ,kCACpDnJ,KAAKqJ,cAAgBnJ,SAASC,iBAAiB,GAAGH,KAAKmJ,8BACnDnJ,KAAKiJ,UACLjJ,KAAKsJ,eAETtJ,KAAKkJ,OAASA,CAClB,CAEAI,YAAAA,GACItJ,KAAKiJ,SAAStI,iBAAiB,QAASX,KAAKuJ,oBAAoB1I,KAAKb,KAAMA,KAAKiJ,WACjF/I,SAASS,iBAAiB,QAASX,KAAKwJ,aAAa3I,KAAKb,OAC1DA,KAAKqJ,cAAc/I,SAAQC,GAAQA,EAAKI,iBAAiB,QAASX,KAAKyJ,mBAAmB5I,KAAKb,KAAMO,KACzG,CAEAgJ,mBAAAA,CAAoB5E,EAAIpE,GACjBoE,EAAGtD,UAAUC,SAAS,UACrBqD,EAAGtD,UAAUQ,OAAO,UAEpB8C,EAAGtD,UAAUO,IAAI,SAGzB,CAEA4H,YAAAA,CAAatG,GACT,IAAIwG,EAASxG,EAAEnC,OACV2I,EAAOrG,QAAQrD,KAAKmJ,aAKjBO,EAAOrG,QAAQ,GAAGrD,KAAKmJ,+BACvBnJ,KAAKiJ,SAAS5H,UAAUQ,OAAO,UAL/B7B,KAAKiJ,SAAS5H,UAAUC,SAAS,WACjCtB,KAAKiJ,SAAS5H,UAAUQ,OAAO,SAO3C,CAEA4H,kBAAAA,CAAmB9E,EAAIvB,GACnB,GAAmB,GAAfpD,KAAKkJ,OAAiB,CACtB,IAAIS,EAAYhF,EAAGnE,aAAa,cAC5BoJ,EAAWjF,EAAGnE,aAAa,aAC3BqJ,EAAM7J,KAAKoJ,cAAc9G,cAAc,mBACvCwH,EAAO9J,KAAKoJ,cAAc9G,cAAc,wBAC5CuH,EAAIxB,UAAYsB,EACZC,IACAE,EAAKC,IAAMH,EAEnB,CACJ,GChBJ,EAjCA,MACI9J,WAAAA,CAAYkK,GACRhK,KAAKiK,IAAMD,EAAmB1H,cLgDrB,uBK/CTtC,KAAKkK,OAASF,EAAmB1H,cLgDjB,sBK/ChBtC,KAAKmK,aAAeH,EAAmB1H,cLgDvB,+BK/CbtC,KAAKiK,MAEJjK,KAAKoK,QAAUpK,KAAKiK,IAAIzJ,aAAa,OACrCR,KAAKqK,QAAUrK,KAAKiK,IAAIzJ,aAAa,OACrCR,KAAKsK,UAAUtK,KAAKiK,IAAIM,OACxBvK,KAAKiK,IAAItJ,iBAAiB,SAAS,IAAMX,KAAKsK,UAAUtK,KAAKiK,IAAIM,SAEzE,CAEAD,SAAAA,CAAUT,GACN,GAAI7J,KAAKmK,aAAc,CACJnK,KAAKmK,aAAa7H,cLqC3B,uBKpCG+F,YAAcwB,GAAKW,iBAC5B,MAAMC,EAAyC,MAAtBZ,EAAO7J,KAAKoK,SAAkBpK,KAAKqK,OAASrK,KAAKoK,QAAxD,IACfK,IAGkB,MADDvK,SAASoC,cAAc,QAAQ9B,aAAa,QAExDR,KAAKmK,aAAa1I,MAAMiJ,MAAQD,EAEhCzK,KAAKmK,aAAa1I,MAAMkJ,KAAOF,EAEnCzK,KAAKkK,OAAOzI,MAAMmJ,MAAQH,EAElC,CACJ,GCHJ,EA7BA,MACI3K,WAAAA,CAAY+K,EAAQC,EAAQC,GACxB/K,KAAKgL,YAAc9K,SAASyC,eAAekI,GAC3C7K,KAAKiL,YAAc/K,SAASyC,eAAemI,GAC3C9K,KAAKkL,cAAgBhL,SAASyC,eAAeoI,GAE7C/K,KAAKmL,UACT,CAEAA,QAAAA,GACQnL,KAAKgL,cACLhL,KAAKoL,qBACLpL,KAAKgL,YAAYrK,iBAAiB,SAAUuC,GAAMlD,KAAKoL,uBACvDpL,KAAKiL,YAAYtK,iBAAiB,SAAUuC,GAAMlD,KAAKoL,uBAE/D,CAEAA,kBAAAA,GACI,MAAMC,GAAUrL,KAAKgL,YAAYT,MAC3Be,GAAUtL,KAAKiL,YAAYV,MACjC,IAIIgB,MAJevL,KAAKkL,cAAc1K,aAAa,cAAiB,GAC7C,IAAM,IAAO,GAGd6K,GAFdC,EAAS,MAAQA,GACjBD,EAASC,EAEjBtL,KAAKkL,cAAcM,YAAc,GAAGD,EAAUf,kBAClD,GCgBJ,EA1CA,MACI1K,WAAAA,CAAYgC,GACR9B,KAAK8B,QAAU5B,SAASC,iBAAiB2B,GAC1C9B,KAAK0C,MACR,CAEAA,IAAAA,GACI1C,KAAK8B,QAAQxB,SAAQC,GAAQA,EAAKI,iBAAiB,SAAUuC,GAAMlD,KAAKyL,UAAUvI,MACtF,CAEAuI,SAAAA,CAAUvI,GACNA,EAAEjC,kBACF,IAAIyK,EAAajL,OAAOsC,SAAS4I,KAC7BC,EAAUnL,OAAOsC,SAAS6I,SAC1BC,EAAU,GAEVC,EAAqB5I,EAAE6I,cAAcvL,aAAa,qBAClDwL,EAAuB9I,EAAE6I,cAAcvL,aAAa,8BACxD,GAAKsL,GAAuBE,EAI5B,GAAc,MAAXJ,EACH,CACI,IAAIK,EAASP,EAAWQ,QAAQ,MAAOF,GACvCvL,OAAOsC,SAAS4I,KAAOM,CAC3B,KAEA,CAEIJ,EADAD,EAAS3I,SAAS6I,GACRF,EAASM,QAAQJ,EAAqBE,GAEtCA,EAAwBJ,EAGtC,IAAIK,EAASP,EAAWQ,QAAQN,EAAUC,GAC1CpL,OAAOsC,SAAS4I,KAAOM,CACvB,CACJ,GCXF,EA3BF,MACInM,WAAAA,CAAYgC,GACV9B,KAAKmM,WAAajM,SAASoC,cAAcR,GACzC9B,KAAK0C,MACP,CACAA,IAAAA,GACM1C,KAAKmM,YACPnM,KAAKmM,WAAWxL,iBAAiB,SAAUX,KAAKoM,WAAWvL,KAAKb,MAEpE,CACAoM,UAAAA,CAAWlJ,GACLA,EAAEmJ,iBAEF,IAAIC,EAActM,KAAKmM,WAAWI,qBAAqB,SACvD,GAAGD,GAAeA,EAAYlM,OAAO,EACrC,CACE,IAAIoM,EAAYF,EAAY,GAAG/B,MAC/B,MAAMkC,EAAMzM,KAAKmM,WAAW3L,aAAa,YACzC,IAAIkM,EAAqBC,mBAAmBH,GAC5C/L,OAAOsC,SAAS4I,KAAOc,EAAM,QAAUC,CACzC,CAEF,GCsBN,EA5CF,MACI5M,WAAAA,CAAY8M,GACR5M,KAAK4M,QAAUA,EACf5M,KAAKsD,OAAStD,KAAK4M,QAAQzM,iBAAiB,mBAAmB,GAC/DH,KAAKuH,OAASvH,KAAK4M,QAAQzM,iBAAiB,mBAAmB,GAC/DH,KAAK6M,cAAgB7M,KAAKsD,OAAOnD,iBAAiB,mBAAmB,GACrEH,KAAKuD,OAAS,KACdvD,KAAK8M,YAAc,KACvB9M,KAAKwH,YAEL,CAEAA,UAAAA,GAGIxH,KAAKsD,QACLtD,KAAKsD,OAAOsF,UACZ5I,KAAKsD,OAAOsF,SAASxI,OAAS,IAE9BJ,KAAKuD,OAAS,IAAIsF,OAAO7I,KAAKsD,OAAQ,CAEpCQ,cAAe,EACbG,gBAAgB,EAChBD,MAAM,EACN+I,aAAc/M,KAAK6M,cAAcjE,SAASxI,OAC1C4F,WAAY,CACRC,OAAQ,sBACRC,OAAQ,yBAGhBlG,KAAK8M,YAAc,IAAIjE,OAAQ7I,KAAKuH,OAAQ,CACxCzD,cAAe,OACfC,aAAc,GACdE,gBAAgB,EAChBD,MAAM,EACNE,qBAAqB,IAEzBlE,KAAKuD,OAAOyJ,WAAWC,QAAUjN,KAAK8M,YACtC9M,KAAK8M,YAAYE,WAAWC,QAAUjN,KAAKuD,OAE/C,GCLe,IChCnB,MACIzD,WAAAA,GACIE,KAAK0C,MACT,CAEAA,IAAAA,GACIjC,OAAOE,iBAAiB,QAAQ,IAAMX,KAAKkN,cAC/C,CAEAA,UAAAA,GACIC,YAAW,KACP,MAAMC,EAAclN,SAASoC,cXFxB,iBWID8K,IACAA,EAAY3L,MAAM4L,QAAU,OAC5BnN,SAASoC,cAAc,QAAQjB,UAAUQ,OXL1C,UWMH,GACD,IACP,GDiByB,IEpC7B,MACI/B,WAAAA,GACIE,KAAKsN,aACT,CAEAA,WAAAA,GACiBpN,SAASC,iBAAiB,mBAClCG,SAASqE,IACV,MAAM4I,EAAQ5I,EAAGnE,aAAa,MACxBgN,EAAW7I,EAAGnE,aAAa,SAC3BiN,EAAS9I,EAAGnE,aAAa,OAE/BkN,MAAMD,GACDE,MAAMC,GAAaA,EAASC,SAC5BF,MAAMG,IAGH,IAAIC,GAFW,IAAIC,WACGC,gBAAgBH,EAAM,aAC3BxL,cAAc,YAEV,IAAViL,GACPQ,EAAIG,aAAa,KAAMX,QAGH,IAAbC,GACPO,EAAIG,aAAa,QAASV,qBAG9BO,EAAII,gBAAgB,WAEpBxJ,EAAGyJ,WAAWC,aAAaN,EAAKpJ,EAAG,GACrC,GAEd,GFOsB,IGrC1B,MACI7E,WAAAA,GACIE,KAAK0C,MACT,CACAA,IAAAA,GACIjC,OAAOE,iBAAiB,QAAQ,IAAMF,OAAOC,WAAazB,GAAuBe,KAAKsO,eACtF7N,OAAOE,iBAAiB,UAAU,IAAMF,OAAOC,WAAazB,KAAyBwB,OAAOC,WbTzF,MaS2HD,OAAOC,WbRlI,MaQoKD,OAAO8N,YAAc,MAAQvO,KAAKsO,cAC7M,CAEAA,UAAAA,GACI,MAAME,EAAO/K,SAAShD,OAAOC,YAAc,IAC3CR,SAASuO,KAAKhN,MAAMiN,SAAWF,EAAO,IAC1C,GH4BuB,II1C3B,MACI1O,WAAAA,GACIE,KAAK0C,MACT,CAEAA,IAAAA,GACIjC,OAAOE,iBAAiB,UAAU,IAAMX,KAAK2O,qBAC7ClO,OAAOE,iBAAiB,QAAQ,IAAMX,KAAK2O,oBAC/C,CAEAA,gBAAAA,GACI,MAAMC,EAAkB1O,SAASyC,edW3B,qBcVFlC,OAAO8N,YAAc,KAAO9N,OAAOC,WAAa,KAAOD,OAAOC,WAAa,IACvEkO,IACAA,EAAgBnN,MAAM4L,QAAU,QAGhCuB,IACAA,EAAgBnN,MAAM4L,QAAU,OAG5C,GJwBe,IAAIwB,EAAiB,oBACf,IAAIA,EAC3B,oCAMe,IKrDjB,MACE/O,WAAAA,CAAYgP,EAAW/O,GACrBC,KAAK+O,YAActO,OAAOC,WAC1BV,KAAK8O,UAAY5O,SAASC,iBAAiB2O,GAC3C9O,KAAKgP,cAAgBjP,EACrBC,KAAK0C,MACP,CAEAA,IAAAA,GACEjC,OAAOE,iBAAiB,QAAQ,IAAMX,KAAKiP,mBAC7C,CAEAA,eAAAA,GACMjP,KAAK8O,WACP3B,YAAW,KACTnN,KAAK8O,UAAUxO,SAASC,IACtB,MAAM2O,EAAc3O,EAAK+B,cAAc,oBACvC,IAAI6M,EAAS,GACTC,EAAY,GACZpP,KAAK+O,YAAc9P,IACrBkQ,EAAS1L,SAASzD,KAAK+O,YAAc,KACrCK,EAAY,IAEd,IAAInP,EAAWM,EAAKJ,iBAAiBH,KAAKgP,eAC1C,GAAI/O,EAASG,OAAS,EAAG,CACvB,MAAMiP,EACJH,EAAYI,aAAeF,EAAYD,EACzC5O,EAAKkB,MAAM8N,OAASF,EAAmBF,EAAS,KAChDlP,EAASK,SAASC,GAChBA,EAAKI,iBACH,QACAX,KAAKY,kBAAkBC,KAAKb,KAAMO,EAAMN,KAG9C,MACEiP,EAAYzN,MAAM+N,SAAW,UAC/B,GACA,GACD,IAEP,CAEA5O,iBAAAA,CAAkB+D,EAAI8K,EAAarM,GACjCA,EAAQnC,kBACRwO,EAAYnP,SAASC,IACfA,IAASoE,EACXpE,EAAKc,UAAUO,IAAI,UAEnBrB,EAAKc,UAAUQ,OAAO,SACxB,GAEJ,GLGA,sBACA,sBAIwB,IAAI6N,EAAS,cAAe,iBAG7B,IAAIC,EAAiB,oBACrB,IAAIA,EAAiB,oBAC9B,IAAIA,EAAiB,YAEjB,IAAIA,EAAiB,iBAGhB,IAAIC,EAAe,mBAAmB,GACtC,IAAIA,EAAe,qBACnB,IAAIA,EAAe,gBAAgB,GAClC,IAAIA,EAAe,sBAAsB,GAG7C1P,SAASC,iBAAiB,WAClCG,SAASC,GAAS,IAAIsP,EAAatP,KAG1BL,SAASC,iBAAiB,YAClCG,SAASC,GAAS,IAAIuP,EAAevP,KAI/B,IMtFrB,MACIT,WAAAA,CAAYiQ,GACR/P,KAAKgQ,aAAe9P,SAASC,iBAAiB4P,GAC9C/P,KAAKiQ,mBACT,CAEAA,iBAAAA,GACIjQ,KAAKgQ,aAAa1P,SAASC,GACvBA,EAAKI,iBAAiB,SAAUuC,GAAMlD,KAAKkQ,aAAa3P,MAEhE,CAEA2P,YAAAA,CAAaC,GACTnQ,KAAKgQ,aAAa1P,SAASC,GAASA,EAAKc,UAAUQ,OAAO,YAC1D,IAAIyB,EAASpD,SAASyC,eAClB,GAAG3C,KAAKgQ,aAAa,GAAGI,cAAc5P,aAAa,0BAEnD6P,EAASF,EAAa3P,aAAa,YACvC2P,EAAa9O,UAAUO,IAAI,UACvB0B,IACaA,EAAOnD,iBAAiB,yBAC9BG,SAASC,IACE,OAAV8P,GAGI9P,EAAKC,aAAa,gBAAkB6P,EAFxCrQ,KAAKsQ,mBAAmB/P,EAAM,gBAK1BP,KAAKsQ,mBAAmB/P,EAAM,mBAEtC,IAEJP,KAAKuQ,aAAajN,GAE1B,CAEAgN,kBAAAA,CAAmB/P,EAAMyE,GACrBzE,EAAK4N,gBAAgB,SACrB5N,EAAKc,UAAUO,IAAIoD,EACvB,CAEAuL,YAAAA,CAAajN,GACT,IAAIC,EAASD,EAAOC,OACpBA,EAAOiN,aACPjN,EAAOkN,eACPlN,EAAOmN,iBACPnN,EAAOoN,sBACP,IAAI9K,EAAatC,EAAOkD,OAAOrG,OAC3ByF,EAAa,EAETtC,EAAOqN,QAAQ/K,EAAa,GAKhCtC,EAAOqN,QAAQ,EAEvB,GN6BkC,wBAGhB,IOzFtB,MACI9Q,WAAAA,CAAY+Q,EAAcC,GACtB9Q,KAAK+Q,QAAU7Q,SAASoC,cAAcuO,GACtC7Q,KAAKgR,aAAe9Q,SAASoC,cAAcwO,GAC3C9Q,KAAKiR,QAAU/Q,SAASoC,cAAc,QAElCtC,KAAK+Q,SACL/Q,KAAK+Q,QAAQpQ,iBAAiB,QAASX,KAAKkR,aAAarQ,KAAKb,MAEtE,CAEAkR,YAAAA,GACQlR,KAAKgR,cAAgBhR,KAAKiR,UAC1BjR,KAAKgR,aAAa3P,UAAUE,OAAO,QACnCvB,KAAKiR,QAAQ5P,UAAUE,OAAO,mBAEtC,GP0EF,iCACA,kBAI2B,IQ3F7B,MACEzB,WAAAA,CAAYqR,EAAcC,EAAiBC,EAAcC,EAAkBC,EAAgBC,GACzFxR,KAAKyR,UAAYvR,SAASC,iBAAiBgR,GAC3CnR,KAAK0R,aAAexR,SAASC,iBAAiBiR,GAC9CpR,KAAK2R,UAAYzR,SAASC,iBAAiBkR,GAC3CrR,KAAK4R,MAAQ,IAAI1R,SAASuO,KAAKtO,iBAAiBmR,IAChDtR,KAAK6R,OAAS3R,SAASoC,cAAciP,GACrCvR,KAAKwR,aAAeA,GAAgB,EAEpCxR,KAAK8R,UAAY9R,KAAK8R,UAAUjR,KAAKb,MACrCA,KAAK+R,WAAa/R,KAAK+R,WAAWlR,KAAKb,MACvCA,KAAKgS,aAAehS,KAAKgS,aAAanR,KAAKb,MAC3CA,KAAKiS,aAAejS,KAAKiS,aAAapR,KAAKb,MAGvCS,OAAOC,WlBdL,MkBeAV,KAAKyR,WACPzR,KAAKyR,UAAUnR,SAASC,GAASA,EAAKI,iBAAiB,aAAcuC,GAAMlD,KAAK8R,UAAUvR,OAGxFP,KAAK0R,cACP1R,KAAK0R,aAAapR,SAAS4R,IACzBA,EAAYzQ,MAAM4L,QAAU,MAAM,IAIlCrN,KAAK2R,WAAa3R,KAAK4R,QACzB5R,KAAK2R,UAAUrR,SAAS6R,IACtBA,EAAS1Q,MAAM4L,QAAU,MAAM,IAGjCrN,KAAK4R,MAAMtR,SAASqE,IAClBA,EAAGhE,iBAAiB,aAAcuC,GAAMlD,KAAK+R,WAAWpN,KACxDA,EAAGhE,iBAAiB,cAAc,IAAMX,KAAKgS,aAAarN,IAAI,KAIlElE,OAAOE,iBAAiB,SAAUX,KAAKiS,cACvCjS,KAAKiS,eAET,CAEAH,SAAAA,CAAUnN,GACR,IACKA,EAAGyL,cAAcA,cAAcA,cAAcA,cAAcxH,UAC9DtI,SAAS8R,IACTA,EAAIjS,iBAAiB,cAAcG,SAAS+R,IAC1CA,EAAQhR,UAAUQ,OAAO,SAAS,GAClC,IAGJ7B,KAAK0R,aAAapR,SAASgS,IACzBA,EAAW7Q,MAAM4L,QAAU,MAAM,IAGnCrN,KAAK2R,UAAUrR,SAAS6R,IACtBA,EAAS1Q,MAAM4L,QAAU,MAAM,IAGjC1I,EAAGtD,UAAUO,IAAI,UACjB,IAAI2Q,EAAqB5N,EAAGnE,aAAa,YACrCgS,EAAOtS,SAASyC,eAAe4P,GAC/BC,IACFA,EAAK/Q,MAAM4L,QAAU,QAEzB,CAEA0E,UAAAA,CAAWpN,GACT,IACKA,EAAGyL,cAAcA,cAAcA,cAAcA,cAAcxH,UAC9DtI,SAAS8R,IACTA,EAAIjS,iBAAiB,cAAcG,SAAS+R,IAC1CA,EAAQhR,UAAUQ,OAAO,SAAS,GAClC,IAGJ7B,KAAK2R,UAAUrR,SAAS6R,IACtBA,EAAS1Q,MAAM4L,QAAU,MAAM,IAGjC1I,EAAGtD,UAAUO,IAAI,UACjB,IAAI2Q,EAAqB5N,EAAGnE,aAAa,WACrCgS,EAAOtS,SAASyC,eAAe4P,GAC/BC,IACFA,EAAK/Q,MAAM4L,QAAU,QAEzB,CAEA2E,YAAAA,CAAarN,GACXA,EAAGtD,UAAUQ,OAAO,UAEpB7B,KAAK2R,UAAUrR,SAAS6R,IACtBA,EAAS1Q,MAAM4L,QAAU,MAAM,GAEnC,CACA4E,YAAAA,GACMxR,OAAOgS,YAAczS,KAAKwR,aAC5BxR,KAAK6R,QAAU7R,KAAK6R,OAAOxQ,UAAUO,IAAI,UAEzC5B,KAAK6R,QAAU7R,KAAK6R,OAAOxQ,UAAUQ,OAAO,SAEhD,GRTA,aACA,kBACA,oBACA,aACA,mBAIc3B,SAASC,iBAAiB,iBAChCG,SAASC,GAAS,IAAImS,EAAYnS,KAGxB,IAAIoS,EACtB,2BACA,2BACA,uBAEiB,ISjHnB,MACI7S,WAAAA,CAAY+K,EAAQC,EAAQC,EAAY6H,GACpC5S,KAAKgL,YAAc9K,SAASyC,eAAekI,GAC3C7K,KAAKiL,YAAc/K,SAASyC,eAAemI,GAC3C9K,KAAKkL,cAAgBhL,SAASyC,eAAeoI,GAC7C/K,KAAKmL,UACT,CAEAA,QAAAA,GACQnL,KAAKgL,cACLhL,KAAKoL,qBACLpL,KAAKgL,YAAYrK,iBAAiB,SAAUuC,GAAMlD,KAAKoL,uBACvDpL,KAAKiL,YAAYtK,iBAAiB,SAAUuC,GAAMlD,KAAKoL,uBAE/D,CAEAA,kBAAAA,GACI,MAAMC,GAAUrL,KAAKgL,YAAYT,MAC3Be,GAAUtL,KAAKiL,YAAYV,MAG3BgB,IAAcF,IAFDrL,KAAKkL,cAAc1K,aAAa,cAC5B,GAAK6K,EAASC,EAAS,IACZA,GAAQd,iBAE1CxK,KAAKkL,cAAcM,YAAc,GAAGD,GACxC,GT0FF,0BACA,0BACA,sBAE2B,IAAIoH,EAC/B,4BACA,4BACA,wBAMyB,IU/H3B,MACI7S,WAAAA,CAAY+S,EAAUC,GAClB9S,KAAK+S,cAAgB7S,SAASC,iBAAiB0S,GAC/C7S,KAAK8S,YAAcA,EAEf9S,KAAK+S,cAAc3S,OAAS,GAC5BJ,KAAKgT,sBAEb,CAEAA,oBAAAA,GACIhT,KAAK+S,cAAczS,SAAQC,IACvBA,EAAKI,iBAAiB,QAASX,KAAKiT,kBAAkBpS,KAAKb,MAAM,GAEzE,CAEAiT,iBAAAA,CAAkB/P,GACd,MAAM6B,EAAQ7B,EAAEnC,OAAOqP,cAAc5P,aAAa,cAC5CsO,EAAY5O,SAASyC,eAAe3C,KAAK8S,aAC3ChE,GAAaA,EAAUvL,QACvBuL,EAAUvL,OAAOqN,QAAQ7L,EAAO,IAExC,GV0GF,4BACA,gBAImB,IAAI2K,EACvB,kBACA,aACA,UACA,GAEkB,IAAIA,EACtB,iBACA,eACA,IACA,EACA,aAIoB,IWhJtB,MACE5P,WAAAA,GACEE,KAAKkT,SAAWhT,SAASC,iBrBwBZ,gBqBvBbH,KAAK0C,MACP,CAEAA,IAAAA,GACE1C,KAAKkT,SAAS5S,SAAQC,IACpBA,EAAKiL,YAAcjL,EAAKgI,QAAQ4K,KAChC5S,EAAKI,iBAAiB,QAASX,KAAKuB,OAAOV,KAAKb,MAAM,GAE1D,CAEAuB,MAAAA,CAAO6R,GACLA,EAAI/G,iBACJ,MAAMgH,EAAgBD,EAAIrS,OAErBsS,EAAchS,UAAUC,SAASpC,GAGpCc,KAAKsT,SAASD,GAFdrT,KAAKuT,SAASF,EAIlB,CAEAE,QAAAA,CAASxT,GACPA,EAAQyL,YAAczL,EAAQwI,QAAQiL,KACtCzT,EAAQ0T,uBAAuBpS,UAAUQ,OAAO3C,GAChDa,EAAQsB,UAAUO,IAAI1C,GACtBa,EAAQsD,QAAQnE,GAA2BmC,UAAUQ,OAAO3C,EAC9D,CAEAoU,QAAAA,CAASvT,GACPA,EAAQyL,YAAczL,EAAQwI,QAAQ4K,KACtCpT,EAAQ0T,uBAAuBpS,UAAUO,IAAI1C,GAC7Ca,EAAQsB,UAAUQ,OAAO3C,GACzBa,EAAQsD,QAAQnE,GAA2BmC,UAAUO,IAAI1C,EAC3D,GX+GgB,IYnJlB,MACEY,WAAAA,GACEE,KAAK0C,MACP,CAEAA,IAAAA,GACMxC,SAASoC,cAAcnD,IACzBsB,OAAOE,iBAAiB,QAAQ,KACfT,SAASC,iBAAiBhB,GAClCmB,SAASoT,IACdA,EAAM/S,iBAAiB,iBAAiB,WACpC,IAAIgT,EAAgBzT,SAASC,iBAAiB,aAC9CwT,GAAerT,SAAQ,SAASsT,GAC5B,IAAIC,EAAYD,EAAapT,aAAa,sBACtC0S,EAAWU,EAAaxD,cAAcjQ,iBAAiB,4BAC3D+S,GAAU5S,SAAQ,SAASP,GACvB,IAAI+T,EAAW/T,EAAQsI,UACnB0L,EAAc,cAAcF,IAC5BG,EAAc9T,SAASoC,cAAc,wBAAwByR,OAC7DC,IACAA,EAAYzJ,MAAQuJ,EAE5B,GACJ,GACJ,IACA9T,KAAKiU,gBAAgBP,EAAM,GAE3B,GAGR,CAEAQ,gBAAAA,CAAiBd,GACf,IAAIe,EAAkBf,EAAIrS,OAAOuB,ctBIP,uBsBH1B,IAAIwR,EAAWM,EAAE,4BAA4BvG,OAC7CsG,EAAiBtK,IAAIiK,EACvB,CAEAG,eAAAA,CAAgBL,GACVA,EAAavS,UAAUC,SAAS,WAChCb,OAAO4T,aAAaT,EAAc,CAChCI,YAAa,aACbM,cAAe,CAAC,MAChBC,eAAgB,OAChBC,kBAAkB,EAClBC,YAAazU,KAAKyU,YAAY5T,KAAKb,MACnC0U,YAAa,8EAIfjU,OAAO4T,aAAaT,EAAc,CAChCI,YAAa,aACbO,eAAgB,OAChBC,kBAAkB,EAClBC,YAAazU,KAAKyU,YAAY5T,KAAKb,MACnC0U,YAAa,6EAIrB,CAEAD,WAAAA,CAAYE,GACVjH,MAAM,0BACHC,MAAMC,GAAaA,EAASgH,SAC5BjH,MAAMG,IACL,MAAMiG,EAAcjG,EAAK+G,QAAU/G,EAAK+G,QAAU,KAClDF,EAASZ,EAAY,GAE3B,GZkF2B,Ia1J7B,MACIjU,WAAAA,CAAY+S,GACR7S,KAAK8U,eAAiB5U,SAASC,iBAAiB0S,GAChD7S,KAAK0C,MACT,CAEAA,IAAAA,GACQ1C,KAAK8U,eAAe1U,OAAS,GAC7BJ,KAAK8U,eAAexU,SAASC,IACzBA,EAAKI,iBAAiB,aAAcuC,GAAMlD,KAAK+U,mBAAmBxU,KAClEA,EAAKI,iBAAiB,cAAeuC,GAAMlD,KAAKgV,sBAAsBzU,IAAM,GAGxF,CAEAwU,kBAAAA,CAAmBhU,GACfA,EAAOM,UAAUO,IAAI,UACrB,IAAIqT,EAAW,GACfjV,KAAK8U,eAAexU,SAAQC,IACnBA,EAAKc,UAAUC,SAAS,WACzB2T,EAASC,KAAK3U,EAClB,IAEJ0U,EAAS3U,SAAQ,CAACC,EAAM4U,KAChB5U,EAAKc,UAAUC,SAAS,YACpB6T,EAAI,GAAM,EACVF,EAASE,EAAI,GAAG9T,UAAUO,IAAI,WAE9BqT,EAASE,EAAE,GAAG9T,UAAUO,IAAI,WAEpC,GAGR,CAEAoT,qBAAAA,CAAsBjU,GAClBA,EAAOM,UAAUQ,OAAO,UAExB7B,KAAK8U,eAAexU,SAASC,IACzBA,EAAKc,UAAUQ,OAAO,UAAU,GAExC,GbiHkD,mBAG7B,Ic3JzB,MACE/B,WAAAA,CAAYsV,EAAQC,EAAOC,EAAMC,EAAQC,GACvCxV,KAAK8N,KAAO,CACV2H,eAAgBL,EAChBM,cAAeL,EACfM,aAAcL,EACdM,eAAgBL,EAChBM,cAAeL,GAEjBxV,KAAK0C,MACP,CAEAA,IAAAA,GACE1C,KAAKoV,OAASlV,SAASyC,eAAe3C,KAAK8N,KAAK2H,gBAChDzV,KAAKqV,MAAQnV,SAASyC,eAAe3C,KAAK8N,KAAK4H,eAC/C1V,KAAKsV,KAAOpV,SAASyC,eAAe3C,KAAK8N,KAAK6H,cAC9C3V,KAAKuV,OAASrV,SAASyC,eAAe3C,KAAK8N,KAAK8H,gBAChD5V,KAAKwV,MAAQtV,SAASyC,eAAe3C,KAAK8N,KAAK+H,eAE5CpV,OAAOC,YAAc,KACtBV,KAAKoV,QAAUpV,KAAKoV,OAAOzU,iBAAiB,QAASX,KAAK8V,aAAajV,KAAKb,OAE9EA,KAAKqV,OACHrV,KAAKqV,MAAM1U,iBAAiB,SAAUX,KAAK+V,iBAAiBlV,KAAKb,OACnEA,KAAKsV,MACHtV,KAAKsV,KAAK3U,iBAAiB,SAAUX,KAAK+V,iBAAiBlV,KAAKb,OAClEA,KAAKuV,QACHvV,KAAKuV,OAAO5U,iBAAiB,QAASX,KAAK+V,iBAAiBlV,KAAKb,OACjEA,KAAKuV,QAAUvV,KAAKuV,OAAO5U,iBAC3B,UACA,SAAUK,GACc,KAAlBA,EAAMgV,SACRhV,EAAMqL,gBAEV,EAAExL,KAAKb,OAETA,KAAKwV,OACHxV,KAAKwV,MAAM7U,iBAAiB,QAASX,KAAKiW,aAAapV,KAAKb,MAChE,CAEA+V,gBAAAA,GACE,IAAIjB,EAAiB5U,SAASC,iBxBiBlB,mBwBhBR+V,EAAYlW,KAAKuV,OAAOhL,MACxB8K,GAASrV,KAAKqV,MAAM9K,MACpB+K,GAAQtV,KAAKsV,KAAK/K,MAClB4L,GAAS,EACbrB,EAAexU,SAAQ,SAAU8V,GAC/B,IAAIC,EAAW,IAAIC,KAAKF,EAAK5V,axBYrB,cwBXJ+V,EAAYF,EAASG,WAAa,EAClCC,EAAWJ,EAASK,cACpBC,EAAYP,EACb5V,axBSM,cwBRNoW,cAEHR,EAAK/U,UAAUO,IAAI,UAEjB+U,EAAU1T,SAASiT,EAAUU,iBAGhB,IAAVvB,GAAeA,IAAUkB,GAChB,IAATjB,GAAcA,IAASmB,IAExBL,EAAK/U,UAAUQ,OAAO,UACtBsU,GAAS,IAGKjW,SAASoC,cxBLjB,gBwBOIb,MAAM4L,QADhB8I,EAC0B,QAEA,MAEhC,GACF,CAEAF,YAAAA,GACEjW,KAAKqV,MAAM9K,MAAQ,EACnBvK,KAAKsV,KAAK/K,MAAQ,EAClBvK,KAAKuV,OAAOhL,MAAQ,GAGpBvK,KAAK+V,kBACP,CAEAD,YAAAA,GACE,MAAMe,EAAgB3W,SAAS4W,uBAAuB,kBACb,UAArCD,EAAc,GAAGpV,MAAMC,UACzBmV,EAAc,GAAGpV,MAAMC,UAAY,EAEnCmV,EAAc,GAAGpV,MAAMC,UAAY,OAEvC,GdiEA,eACA,cACA,aACA,cACA,eAIoB,IepKtB,MACE5B,WAAAA,CAAYgC,EAASsU,EAAMW,EAAMC,GAC/BhX,KAAKC,SAAWC,SAASC,iBAAiB2B,GAC1C9B,KAAKiX,MAAQ/W,SAASC,iBAAiBiW,GACvCpW,KAAKkX,UAAYhX,SAASyC,eAAeoU,GACzC/W,KAAK2W,UAAYzW,SAASyC,eAAeqU,GACzChX,KAAK0C,MACP,CAEAA,IAAAA,GACE1C,KAAKC,SAASK,SAASC,GACrBA,EAAKI,iBAAiB,eAAgBuC,GAAMlD,KAAKmX,gBAAgB5W,MAErE,CAEA4W,eAAAA,CAAgBrV,GACV9B,KAAKkX,WACPlX,KAAKkX,UAAU1B,QAEjB,MAAM4B,EAAmBtV,EAAQQ,cAAc,eAC/C,IAAI+U,EAAWD,EAAiB7O,QAAQ+O,IACpCC,EAAgBH,EAAiBI,UAErCxX,KAAK2W,UAAUtO,UAAYkP,EAE3BvX,KAAKC,SAASK,SAASmX,GACrBA,EAAMpW,UAAUQ,OAAOzC,KAEzB0C,EAAQT,UAAUO,IAAIxC,GACtB,IAAIsY,EAAY,GzBsCN,OyBrCNL,EACFrX,KAAKiX,MAAM3W,SAAS8V,IAClBsB,EAAUxC,KAAKkB,GACfA,EAAK/U,UAAUQ,OAAOzC,GACtBgX,EAAK/U,UAAUQ,OAAOzC,EAA8B,IAGtDY,KAAKiX,MAAM3W,SAASC,IAClBA,EAAKc,UAAUO,IAAIxC,GACfmB,EAAKgI,QAAQ8O,WAAaA,GAC5BK,EAAUxC,KAAK3U,GACfA,EAAKc,UAAUQ,OAAOzC,IAEtBmB,EAAKc,UAAUO,IAAIxC,EACrB,IAGJ,IAAIuY,EAASzX,SAASoC,czBwBV,gByBvBRoV,EAAUtX,OAAS,EACrBuX,EAAOlW,MAAM4L,QAAU,QAEvBsK,EAAOlW,MAAM4L,QAAU,MAE3B,GfgHA,sCACA,mBACA,aACA,cAEqB,IgB1KvB,MACEvN,WAAAA,CAAYsW,EAAMW,EAAMa,GACtB5X,KAAKiX,MAAQ/W,SAASC,iBAAiBiW,GACvCpW,KAAK6X,SAAW3X,SAASyC,eAAeoU,GACxC/W,KAAK4X,UAAYA,EACjB5X,KAAK0C,MACP,CAEAA,IAAAA,GACE1C,KAAK6X,UACH7X,KAAK6X,SAASlX,iBAAiB,UAAWuC,IACxCA,EAAEmJ,iBACFrM,KAAK8X,kBAAkB,GAE7B,CAEAA,gBAAAA,GACE,IACIT,EADiBnX,SAASoC,cAActC,KAAK4X,WAE9CtV,cAAc,KACd9B,a1B0DG,Y0BzDFuX,EAAwB,G1BwDlB,O0BtDNV,EACFU,EAAwB/X,KAAKiX,MAE7BjX,KAAKiX,MAAM3W,SAASC,IACdA,EAAKgI,QAAQ8O,UAAYA,GAC3BU,EAAsB7C,KAAK3U,EAC7B,IAIJ,MAAMyX,EAAW,IAAIC,SAASjY,KAAK6X,UAEnC,IAAIH,EAAY,GACZQ,GAAY,EACZC,GAAY,EACZC,GAAY,EACZC,GAAgB,EACpBN,EAAsBzX,SAASC,IAC7B,IAAI2U,GAAO,EACX,IAAK,MAAMoD,KAAQN,EAASO,UAAW,CACrC,IAAIC,EAAYF,EAAK,GAErB,G1BkCI,O0BnCUA,EAAK,IAGjBE,GAAanZ,EACb,CACA+Y,GAAY,EACZC,GAAgB,EAChB,IAAII,EAAOlY,EAAKC,aAAa,QAAQgY,KACjCC,G1B4BD,Q0B5BSA,IACVvD,GAAO,EAEX,CACF,CACY,GAARA,GACF3U,EAAKc,UAAUQ,OAAOxC,GACtBqY,EAAUxC,KAAK3U,IAEE,GAAb6X,EACF7X,EAAKc,UAAUO,IAAIvC,GAEnBkB,EAAKc,UAAUQ,OAAOxC,EAE1B,IAKF,IAAIqZ,EAAS,GAMbX,EAAsBzX,SAASC,IAC7B,IAAK,MAAM+X,KAAQN,EAASO,UAAW,CACrC,IAAIC,EAAYF,EAAK,GACjBK,EAAUL,EAAK,GACfG,EAAOlY,EAAKC,aAAa,QAAQgY,KACrCE,EAAOxD,KAAKuD,GACRD,GAAanZ,GAA0C,GAAXsZ,GAC9CP,GAAY,EACZF,GAAY,GACHM,GAAanZ,GAA0C,GAAXsZ,GACrDP,GAAY,EACZD,GAAY,GAGZC,GAAY,CAEhB,KAGF,IAAIQ,EAAc,GAEdV,GAAaR,EAAUtX,OAAS,EAElCwY,EAAclB,EAAUmB,MAAK,SAAUC,EAAGC,GACxC,OAAOA,EAAID,CACb,IACSZ,IAAcR,EAAUtX,OAGjCwY,EAAcF,EAAOG,MAAK,SAAUC,EAAGC,GACrC,OAAOA,EAAID,CACb,IACSX,GAAaT,EAAUtX,OAAS,EAGzCwY,EAAclB,EAAUmB,MAAK,SAAUC,EAAGC,GACxC,OAAOD,EAAIC,CACb,IACSZ,IAAcT,EAAUtX,OAAS,IAE1CwY,EAAcF,EAAOG,MAAK,SAAUC,EAAGC,GACrC,OAAOD,EAAIC,CACb,KAEF,IAAIC,EAAU,GACZX,EAEEX,EAAUtX,OAAO,GAEnBwY,EAAYtY,SAAQ,CAAC2W,EAAO9B,KAC1B4C,EAAsBzX,SAASC,IAE7B,IAAIkY,EAAOlY,EAAKC,aAAa,kBACzByW,GAASwB,IACXO,EAAQ9D,KAAK3U,GACbmX,EAAUxC,KAAK3U,GACfA,EAAKkB,MAAMwX,MAAQ9D,EACrB,GACA,IAKNyD,EAAYtY,SAAQ,CAAC2W,EAAO9B,KAC1B4C,EAAsBzX,SAASC,IAE7B,IAAIkY,EAAOlY,EAAKC,aAAa,kBACzByW,GAASwB,IACXO,EAAQ9D,KAAK3U,GACbmX,EAAUxC,KAAK3U,GACfA,EAAKkB,MAAMwX,MAAQ9D,EACrB,GACA,IAMJ,IAAIwC,EAASzX,SAASoC,c1BrEV,gB0BsEZqV,EAAOlW,MAAM4L,QAAU,OACnBqK,EAAUtX,OAAS,EACJ,GAAbgY,GACEL,EAAsB3X,OACxBuX,EAAOlW,MAAM4L,QAAU,SAKzBsK,EAAOlW,MAAM4L,QAAU,QAGzBsK,EAAOlW,MAAM4L,QAAU,OAGzB,MAAM6L,EAAchZ,SAASyC,e1BtFtB,gB0BuFDP,EAAWlC,SAASyC,e1BxFhB,Y0B0FVuW,GAAeA,EAAY7X,UAAUQ,OAAOxC,GAC5C+C,GAAYA,EAASf,UAAUQ,OAAOxC,GACtCa,SAASoC,cAAc,QAAQjB,UAAUQ,O1B7F9B,kB0B8Fb,GhBNA,mBACA,aACA,8CAnEF,MAuEMsX,EAAgB,IiB/KtB,MACIrZ,WAAAA,CAAYsZ,GACZpZ,KAAKqZ,QAAU5Y,OAAO4Y,QACtBrZ,KAAKsZ,YACLtZ,KAAKuZ,eAAiB,CACpBC,IAAK,EACLC,IAAK,GAEPzZ,KAAK0Z,oBAAsB,CACzBF,IAAK,EACLC,IAAK,GAEPzZ,KAAK+P,QAAU,GACf/P,KAAK2Z,WAAa,GAClB3Z,KAAK4Z,aAAe,GACpB5Z,KAAK6Z,eACL7Z,KAAK8Z,kBAAoBrZ,OAAOsZ,eAChC/Z,KAAKga,cAAgBvZ,OAAOuZ,cAC5Bha,KAAKia,kBACLja,KAAKka,UAAY,GACjBla,KAAKma,aAAe1Z,OAAO2Z,aAC3Bpa,KAAKqa,QAAU,GACfra,KAAKsa,gBAAkB,CAAC,EACxBta,KAAKua,mBAAqB,GAC1Bva,KAAKwa,IACLxa,KAAKya,WACLza,KAAKoZ,SAAWA,EAChBpZ,KAAK0a,cAAgBxa,SAASyC,eAC5BrD,EAAiBC,iBAEnBS,KAAK2a,cAAgBza,SAASyC,eAC5BrD,EAAiBE,kBAEnBQ,KAAK4a,YAAc1a,SAASyC,eAC1BrD,EAAiBO,gBAEnBG,KAAK4Z,aAAe5Z,KAAK4a,aAAe5a,KAAK4a,YAAYrQ,MACzDvK,KAAK0C,MACP,CAEA,UAAMA,GACA1C,KAAK2a,eACP3a,KAAKgT,sBAET,CAEA6H,OAAAA,GACE,IAAIC,EAAc5a,SAASyC,eAAe3C,KAAKoZ,UAC3C0B,IACF9a,KAAKwa,IAAM,IAAIO,OAAOC,KAAKC,IAAIH,EAAY,CACvCI,KAAM,EACNC,OAAQnb,KAAK8Z,oBAIjB9Z,KAAKya,WAAa,IAAIM,OAAOC,KAAKI,WAClCpb,KAAKqb,oBAET,CAEAC,mBAAAA,GACEtb,KAAKqa,QAAQ/Z,SAASib,IACpBA,EAAOC,OAAO,KAAK,IAErBxb,KAAKqa,QAAU,GACfra,KAAKka,UAAU5Z,SAAQ,CAAAiG,EAA0B4O,KAAM,IAA9B3F,EAAUwH,EAAOlJ,GAAKvH,EACzCgV,EAAS,IAAIR,OAAOC,KAAKS,OAAO,CAClCjM,WACAgL,IAAKxa,KAAKwa,IACVxD,MAAOA,EACP0E,QAAS5N,EACT6N,WAAW,EACXC,OAAQ,SAASzG,IACjB0G,KAAMvc,EAAiBG,SAEzB8b,EAAOO,YAAY,SAAS,KAC1B9b,KAAKya,WAAWsB,QAChB/b,KAAKya,WAAWuB,WAAWlO,GAC3B9N,KAAKya,WAAWwB,KAAKV,EAAOW,SAAUX,GACtCvb,KAAKwa,IAAI2B,UAAUZ,EAAOa,eAC1Bpc,KAAKwa,IAAI6B,QAAQ,EAAE,IAErBrc,KAAKwa,IAAI6B,QAAQ,GACjBrc,KAAKqa,QAAQnF,KAAKqG,EAAO,IAE3Bvb,KAAKwa,IAAI2B,UAAUnc,KAAKqa,QAAQ,GAAG+B,cACrC,CAEAE,UAAAA,CAAWvX,GACT,MAAMwX,EAAiBvc,KAAKqa,QAAQtV,GAChCwX,IACFvc,KAAKya,WAAWuB,WAAWhc,KAAKqa,QAAQtV,GAAO2W,SAC/C1b,KAAKya,WAAWwB,KAAKjc,KAAKwa,IAAKxa,KAAKqa,QAAQtV,IAC5C/E,KAAKwa,IAAI2B,UAAUI,EAAeH,eAClCpc,KAAKwa,IAAI6B,QAAQ,IAErB,CAEAG,kBAAAA,GACExc,KAAKsZ,YAAYhZ,SAASmc,IACxB,MAAM1Z,EAAW0Z,EAAOC,SAEnB1c,KAAKsa,gBAAgBvX,KACxB/C,KAAKsa,gBAAgBvX,IAAY,EACjC/C,KAAKua,mBAAmBrF,KAAKuH,GAC/B,IAEF,IAAK,IAAItH,EAAI,EAAGA,EAAInV,KAAKua,mBAAmBna,OAAQ+U,IAClDnV,KAAK2a,cAActS,WAAa,kBAAkBrI,KAAKua,mBAAmBpF,GAAGuH,iCAAiC1c,KAAKua,mBAAmBpF,GAAGwH,mBAAmB3c,KAAKua,mBAAmBpF,GAAGyH,gBAAgB5c,KAAKua,mBAAmBpF,GAAGuH,mBAEtO,CAEA1J,oBAAAA,GACE9S,SACGyC,eAAerD,EAAiBI,eAChCiB,iBAAiB,QAASX,KAAK6c,eAAehc,KAAKb,OAEtDE,SACGC,iBAAiB,eAAeb,EAAiBK,kBACjDW,SAASwc,IACRA,EAASnc,iBACP,SACAX,KAAK+c,qBAAqBlc,KAAKb,KAAM8c,GACtC,IAGL9c,KAAK2a,cAAcha,iBACjB,SACAX,KAAKgd,qBAAqBnc,KAAKb,OAGjCA,KAAK4a,YAAYja,iBACf,SACAX,KAAKid,mBAAmBpc,KAAKb,OAG/BE,SAASS,iBACP,mBACAX,KAAKkd,iBAAiBrc,KAAKb,MAE/B,CAEA6c,cAAAA,CAAe7b,GACb,IAAIqP,EAASrP,EAAMD,OAAOwJ,MAAM4S,cAC5BC,EAAKpd,KAAK0a,cAAcnO,qBAAqB,MACjD,IAAK,IAAI4I,EAAI,EAAGA,EAAIiI,EAAGhd,OAAQ+U,IACrBiI,EAAGjI,GAAG2B,uBAAuB,oBAAoB,GACnDzO,UAAU8U,cAAcE,QAAQhN,IAAW,EAC/C+M,EAAGjI,GAAG1T,MAAM4L,QAAU,GAEtB+P,EAAGjI,GAAG1T,MAAM4L,QAAU,MAG5B,CAEA0P,oBAAAA,CAAqBD,EAAU9b,GAC7B,GAAGA,EAAMD,OAAOuc,SAGA,GADFtd,KAAK+P,QAAQsN,QAAQP,EAASvS,QAExCvK,KAAK+P,QAAQmF,KAAK4H,EAASvS,WAI3B,CACF,IAAIxF,EAAQ/E,KAAK+P,QAAQsN,QAAQP,EAASvS,QAC3B,IAAXxF,GACF/E,KAAK+P,QAAQwN,OAAOxY,EAAO,EAE/B,CAEA/E,KAAKwd,qBACP,CAEAR,oBAAAA,CAAqB9Z,GACIhD,SAASC,iBAC9B,eAAeb,EAAiBK,kBAQlCK,KAAK2Z,WAAa3Z,KAAK2a,cAAcpQ,MACrCvK,KAAK4Z,aAAe5Z,KAAK4a,aAAe5a,KAAK4a,YAAYrQ,MACzDvK,KAAKqb,mBACP,CAEA4B,kBAAAA,CAAmB/Z,GACMhD,SAASC,iBAC9B,eAAeb,EAAiBK,kBAQlCK,KAAK4Z,aAAe5Z,KAAK4a,aAAe5a,KAAK4a,YAAYrQ,MACzDvK,KAAKqb,mBACP,CACA6B,gBAAAA,GACEld,KAAKyd,+BACLzd,KAAKwc,qBACDxc,KAAK2a,gBACP3a,KAAK2a,cAAcpQ,MAAQvK,KAAKga,cAChCha,KAAK2Z,WAAa3Z,KAAK2a,cAAcpQ,OAGvCvK,KAAKia,kBAAoBja,KAAKsZ,YAC9BtZ,KAAK6a,UACL7a,KAAK0d,aACP,CAEAD,4BAAAA,GACIzd,KAAKma,aAAe1Z,OAAO2Z,aAC3Bpa,KAAKsZ,YAActZ,KAAKqZ,OAC5B,CAEA,iBAAMqE,GACAC,UAAUC,YACZD,UAAUC,YAAYC,mBACpB7d,KAAK8d,aAAajd,KAAKb,MACvBA,KAAK+d,iBAAiBld,KAAKb,OAG7Bge,QAAQC,IAAI3e,EAAiB4e,mBAEjC,CAEA,wBAAMC,CAAmBC,GACvB,IACIC,EAAgB,GADHne,SAASyC,eAAe3C,KAAKoZ,UAAU5Y,aAAa,0BAC5B4d,EAAY5E,YAAY4E,EAAY3E,MAC7E,IACE,IAAI7L,QAAiBF,MAAM2Q,GACvBC,QAAiB1Q,EAASgH,OAE9B,GAAwB,MAApB0J,GAAUC,QAAkBD,GAAUE,SAASpe,OAAS,EAAG,CAC7D,IAAIqe,EAAeH,EAASE,QACxBE,EAAW,KAmBf,OAlBAD,EAAane,SAASqe,IACpBA,EAAcC,mBAAmBte,SAASue,IAEtCA,EAAiBC,MAAM7b,SAAS,aAChC4b,EAAiBC,MAAM7b,SAAS,eAEhCyb,EAAWG,EAAiBE,WAC5B/e,KAAK2Z,WAAa3Z,KAAKga,cACvBha,KAAKua,mBAAmBja,SAAS0e,IAC3BA,EAAatC,UAAYgC,IAC3B1e,KAAK2Z,WAAaqF,EAAatC,SACjC,IAEJ,GACA,IAGJ1c,KAAKqb,oBACEqD,CACT,CACE,OAAO,IAEX,CAAE,MAAOO,GAEP,OADAjB,QAAQiB,MAAM,wCAA0CA,EAAMC,SACvD,IACT,CACF,CAEAnB,gBAAAA,CAAiBkB,GACfjB,QAAQiB,MAAM,sBAAwBA,EAAMC,QAC9C,CAEA,kBAAMpB,CAAatO,GACjBxP,KAAKuZ,eAAiB,CACpBC,IAAKhK,EAAS2P,OAAOC,SACrB3F,IAAKjK,EAAS2P,OAAOE,WAEvB,IAAIC,QAAsBtf,KAAKme,mBAAmBne,KAAKuZ,gBACvD,QAAsBrX,IAAlBod,GAAgD,MAAjBA,GAC7Btf,KAAK2a,cAAe,CACtB,IAAI4E,EAAiB,GACrB,IAAK,IAAIpK,EAAI,EAAGA,EAAInV,KAAK2a,cAAc6E,QAAQpf,OAAQ+U,IACrDoK,EAAerK,KAAKlV,KAAK2a,cAAc6E,QAAQrK,GAAG5K,OAEhDgV,EAAetc,SAASqc,GAC1Btf,KAAK2a,cAAcpQ,MAAQ+U,EAE3Btf,KAAK2a,cAAcpQ,MAAQvK,KAAKga,aAEpC,CAEJ,CAEAqB,iBAAAA,GACErb,KAAKia,kBAAoBja,KAAKsZ,YAAYjJ,QACvC9F,GAAYA,EAAMmS,UAAY1c,KAAK2Z,aAA2D,IAA3CpP,EAAMkV,OAAOpC,QAAQrd,KAAK4Z,gBAGhF5Z,KAAKwd,qBACP,CAGAA,mBAAAA,GACExd,KAAK0a,cAAcrS,UAAY,GAC/BrI,KAAKka,UAAY,GAEMha,SAASC,iBAC9B,eAAeb,EAAiBK,kBADlC,IAGI+f,EAAe,GACfC,GAAiB,EACrBC,OAAOC,OAAO7f,KAAK+P,SAASzP,SAASuJ,IACvB,SAARA,IACF8V,GAAiB,EACnB,IAEC3f,KAAK+P,QAAQ3P,OAAO,IAErBuf,GAAiB,GAIjBD,EADEC,EACa3f,KAAKia,kBAAkB5J,QAAO,CAAC9F,EAAOuV,KACnD,GACC9f,KAAK+f,gBAAgBxV,EAAMvK,KAAK+P,SAE/B,OAAOxF,CACT,IAGavK,KAAKia,kBAEtBja,KAAKggB,iBAAiBN,GACtB1f,KAAKsb,qBACP,CAEA2E,UAAAA,CAAWlb,EAAOiS,EAAOkJ,GACvB,MAAMC,EAAWjgB,SAASkgB,cAAc,MACxCD,EAASnb,UAAY,YACrB,MAAMkE,EAAShJ,SAASkgB,cAAc,OACtClX,EAAOlE,UAAY,mBACnBkE,EAAOvI,iBAAiB,SAAUuC,IAChClD,KAAKsc,WAAWvX,GACF/E,KAAK0a,cAAcva,iBAAiB,qBAC1CG,SAASC,IACfA,EAAKc,UAAUQ,OAAO,SAAS,IAEjCqH,EAAO7H,UAAUO,IAAI,SAAS,IAEhC,MAAMye,EAAUngB,SAASkgB,cAAc,OACvCC,EAAQrb,UAAY,YACpB,MAAMsb,EAAWpgB,SAASkgB,cAAc,OACxCE,EAAStb,UAAY,aACrB,MAAM6W,EAAO3b,SAASkgB,cAAc,OACpCvE,EAAK9R,IAAM,8BACX8R,EAAK0E,IAAM,GACXD,EAASE,YAAY3E,GAErB,MAAM4E,EAAYvgB,SAASkgB,cAAc,OACzCK,EAAUzb,UAAY,OACtB,MAAM0b,EAAexgB,SAASkgB,cAAc,OAC5CM,EAAa3W,IAAMmW,GAA8B,4BACjDQ,EAAaH,IAAM,OACnBE,EAAUD,YAAYE,GACtB,MAAMC,EAAYzgB,SAASkgB,cAAc,OACzCO,EAAU3b,UAAY,iBACtB,MAAM4b,EAAY1gB,SAASkgB,cAAc,MAczC,OAbAQ,EAAU5b,UAAY,KACtB4b,EAAUpV,YAAcwL,EACxB2J,EAAUH,YAAYI,GAEtBP,EAAQG,YAAYC,GACpBJ,EAAQG,YAAYG,GAEpBzX,EAAOsX,YAAYH,GACnBnX,EAAOsX,YAAYF,GAEnBH,EAASK,YAAYtX,GAErBlJ,KAAK0a,cAAc8F,YAAYL,GACxBA,CACT,CAEAH,gBAAAA,CAAiBa,GACfA,EAAUvgB,SAAQ,CAACC,EAAM4U,KACvBnV,KAAKka,UAAUhF,KAAK,CAAC,CACjBsE,IAAKsH,WAAWvgB,EAAKoc,WACrBlD,IAAKqH,WAAWvgB,EAAKqc,YAEvBrc,EAAKwgB,aACL,qCACExgB,EAAKwgB,gJAELxgB,EAAKwgB,kJAELxgB,EAAKygB,mJAELzgB,EAAK0gB,4IAEL1gB,EAAK2gB,8DAELzgB,OAAO0gB,WAAW,gBAAgB5gB,EAAKoc,UAAU,IAAIpc,EAAKqc,gFAEvDnc,OAAO2gB,oGAEV3gB,OAAO4gB,uEAEP5gB,OAAO6gB,4FAGXthB,KAAKigB,WAAW9K,EAAG5U,EAAKwgB,aAAaxgB,EAAKghB,kBAAkB,GAEhE,CAEAxB,gBAAkBA,CAAChd,EAAUye,IACpBze,EAAS0e,WAAWC,MAAKnhB,IAA8C,IAAtCihB,EAAmBnE,QAAQ9c,MjBjP/B,OACxCE,OAAOoa,QAAU1B,EAAc0B,QAAQha,KAAKsY,GAGtB,IAAIwI,EACxB,gBAG0B,IAAIA,EAC9B,uBAE0B,IkB9L5B,MACE7hB,WAAAA,CAAYoZ,EAAa0I,GACvB5hB,KAAKqQ,OAASnQ,SAASC,iBAAiByhB,GACxC5hB,KAAKkZ,YAAchZ,SAASC,iBAAiB+Y,GAC7ClZ,KAAK0C,MACP,CACAA,IAAAA,GACM1C,KAAKqQ,QACPrQ,KAAKqQ,OAAO/P,SAAQC,IACdA,aAAgBshB,YAChBthB,EAAKI,iBAAiB,QAASX,KAAK8hB,UAAUjhB,KAAKb,OAEnDge,QAAQiB,MAAM,mCAChB,GAGR,CAEA6C,SAAAA,GACM9hB,KAAKkZ,YAAY9Y,QACjBJ,KAAKkZ,YAAY5Y,SAAQyhB,IAClBA,GAAcA,EAAW1gB,UAAUC,SAAS,eAC3CygB,EAAW1gB,UAAUQ,OAAO,cAC5BkgB,EAAW1gB,UAAUO,IAAI,iBAEzBmgB,EAAW1gB,UAAUO,IAAI,cACzBmgB,EAAW1gB,UAAUQ,OAAO,eAChC,IAGF7B,KAAKqQ,OAAOjQ,QACdJ,KAAKqQ,OAAO/P,SAAQyhB,IACdA,EAAW1gB,UAAUC,SAAS,gBAChCygB,EAAW1gB,UAAUQ,OAAO,eAC5BkgB,EAAW1gB,UAAUO,IAAI,sBAEzBmgB,EAAW1gB,UAAUQ,OAAO,oBAC5BkgB,EAAW1gB,UAAUO,IAAI,eAC3B,GAGR,GlBqJ0C,gBAAiB,wBAE/C,ImBhMd,MACI9B,WAAAA,GACIE,KAAK0C,MACT,CAEAA,IAAAA,GAmCM,SAASsf,IACN,MAAMC,EAASxhB,OAAOsC,SAASC,KAAKkf,UAAU,GACxCC,EAAYjiB,SAASyC,eAAesf,GACpCG,EAAYliB,SAASyC,eAAe,YACzC,IAAIlC,OAAOsC,SAASC,KAAKC,SAAS,gBAEzBkf,EACH,CACAC,EAAU3gB,MAAM4L,QAAU,QAC1B,MAAMgV,EAAiB5hB,OAAO6hB,QAC9BH,EAAU7f,cAAc,oBAAsB6f,EAAU7f,cAAc,mBAAmBjB,UAAUO,IAAI,QACvG1B,SAASyC,eAAe,YAAYtB,UAAUO,IAAI,QAClD2gB,QAAQC,aAAa,KAAM,KAAM/hB,OAAOsC,SAAS6I,SAAWnL,OAAOsC,SAASwS,QAC5E9U,OAAOgiB,SAAS,EAAGJ,EACnB,CAER,CAhDJniB,SAASC,iBAAiB,kBAAkBG,SAAQoiB,GAASA,EAAMjhB,MAAM4L,QAAU,SACnFnN,SAASS,iBAAiB,SAAS,SAASK,GACvC,MAAMohB,EAAYliB,SAASyC,eAAe,YACtBzC,SAASC,iBAAiB,wBAC9BC,OAAS,IACrBgiB,EAAU3gB,MAAM4L,QAAU,QAElC,IACA5M,OAAOE,iBAAiB,cAAc,KAClCqhB,GAAW,IAIf9hB,SAASC,iBAAiB,2BAA2BG,SAAQqiB,IACzDA,EAAKhiB,iBAAiB,SAAUK,IAC5BghB,IACA,IAAIY,EAAS1iB,SAASC,iBAAiB,2CACzB,KAAXyiB,GAA4B,OAAXA,IAChB1iB,SAASoC,cAAc,2CAA2CiI,MAAQoY,EAAKniB,aAAa,kBAChG,GACF,IAGNN,SAASC,iBAAiB,kBAAkBG,SAAQuiB,IAChDA,EAAYliB,iBAAiB,SAAS,KAClCkiB,EAAYxf,QAAQ,mBAAmBhC,UAAUQ,OAAO,QACxD3B,SAASyC,eAAe,YAAYtB,UAAUQ,OAAO,QACnC3B,SAASyC,eAAe,YAChClB,MAAM4L,QAAU,MAAM,GAClC,GAoBP,GnBuIgB,UAEL,IoBlMnB,MACIvN,WAAAA,CAAYsC,GACRpC,KAAK8iB,cAAgB5iB,SAASyC,eAAeP,GAC7CpC,KAAK0C,MACT,CAEAA,IAAAA,GAEI,MAAMqgB,EAAO/iB,KAEbE,SAASS,iBAAiB,SAAS,SAASK,GACxC,MAAMohB,EAAYliB,SAASyC,eAAe,YACtBzC,SAASC,iBAAiB,wBAC9BC,OAAS,IACrBgiB,EAAU3gB,MAAM4L,QAAU,SAE9B,MAAM2V,EAAY9iB,SAASoC,cAAc,yCACrC0gB,GACAD,EAAKE,YAAYD,EAAUE,GAAId,EAEvC,GACJ,CAEAa,WAAAA,CAAYE,EAASf,GAEIliB,SAASyC,eAAewgB,GAEhCxiB,iBAAiB,mBAAmB,WAC7CyhB,EAAU3gB,MAAM4L,QAAU,MAC9B,GACJ,GpBoK8B,YAEd,IqBpMpB,MACIvN,WAAAA,CAAY+S,EAAU7N,GAA4D,IAAjDwa,EAAOvd,UAAA7B,OAAA,QAAA8B,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAEmhB,WAAY,MAAOC,UAAW,IACvErjB,KAAKkT,SAAWhT,SAASC,iBAAiB0S,GAC1C7S,KAAKgF,UAAYA,EACjBhF,KAAKwf,QAAUA,EAEfxf,KAAKsjB,eAAiBtjB,KAAKsjB,eAAeziB,KAAKb,MAC/CA,KAAK4D,SAAW,IAAI2f,qBAAqBvjB,KAAKsjB,eAAgBtjB,KAAKwf,SAEnExf,KAAKwjB,iBACT,CAEAA,eAAAA,GACIxjB,KAAKkT,SAAS5S,SAASP,IACnBC,KAAK4D,SAASmE,QAAQhI,EAAQ,GAEtC,CAEAujB,cAAAA,CAAe/K,EAAS3U,GACpB2U,EAAQjY,SAASmjB,IACb,GAAIA,EAAMC,eAAgB,CACtB,MAAMC,EAAiBF,EAAM1iB,OAAOuB,cAAc,YAC5CshB,EAAWngB,SAASkgB,EAAenM,UAAUtL,QAAQ,SAAU,IAAK,IACpE2X,EAAWpgB,SAASkgB,EAAenjB,aAAa,iBAAkB,KAAO,IAE/EijB,EAAM1iB,OAAOM,UAAUO,IAAI5B,KAAKgF,WAChChF,KAAK8jB,eAAeH,EAAgBC,EAAUC,GAC9CjgB,EAASmgB,UAAUN,EAAM1iB,OAC7B,IAER,CAEA+iB,cAAAA,CAAe/jB,EAAS6jB,EAAUC,GAC9B,IAAIG,EAAa,EACjB,MAAMC,EAAYL,GAAYC,EAAW,KACnCK,EAAWC,aAAY,KACzBH,GAAcC,EACVD,GAAcJ,IACdI,EAAaJ,EACbQ,cAAcF,IAElBnkB,EAAQyX,UAAY6M,KAAKC,MAAMN,EAAW,GAC3C,IACP,GrByJoC,kBAAmB,UAAW,CAAEZ,WAAY,MAAOC,UAAW,I","sources":["webpack://1-gulp-case-4/./src/js/utils/constant.js","webpack://1-gulp-case-4/./src/js/module/AccordianHandler/index.js","webpack://1-gulp-case-4/./src/js/module/ShowHide/index.js","webpack://1-gulp-case-4/./src/js/module/SwiperSlider/index.js","webpack://1-gulp-case-4/./src/js/module/CustomDropdown/index.js","webpack://1-gulp-case-4/./src/js/module/RangeSlider/index.js","webpack://1-gulp-case-4/./src/js/module/HomeFinanceCalc/index.js","webpack://1-gulp-case-4/./src/js/module/LanguageSwitcher/index.js","webpack://1-gulp-case-4/./src/js/module/SearchHandler/index.js","webpack://1-gulp-case-4/./src/js/module/PropertySlider/index.js","webpack://1-gulp-case-4/./src/js/custom.js","webpack://1-gulp-case-4/./src/js/module/PageLoader/index.js","webpack://1-gulp-case-4/./src/js/module/SVGConverter/index.js","webpack://1-gulp-case-4/./src/js/module/FontResizerController/index.js","webpack://1-gulp-case-4/./src/js/module/ResponsiveHandler/index.js","webpack://1-gulp-case-4/./src/js/module/FileRackSlider/index.js","webpack://1-gulp-case-4/./src/js/module/SwiperFilter/index.js","webpack://1-gulp-case-4/./src/js/module/NavbarToggler/index.js","webpack://1-gulp-case-4/./src/js/module/HeaderMenuController/index.js","webpack://1-gulp-case-4/./src/js/module/CarFinanceCalc/index.js","webpack://1-gulp-case-4/./src/js/module/SliderNavigation/index.js","webpack://1-gulp-case-4/./src/js/module/MoreLessToggle/index.js","webpack://1-gulp-case-4/./src/js/module/PhoneInputHandler/index.js","webpack://1-gulp-case-4/./src/js/module/PromotionCardManager/index.js","webpack://1-gulp-case-4/./src/js/module/PromotionFilter/index.js","webpack://1-gulp-case-4/./src/js/module/FilterCardsbyCat/index.js","webpack://1-gulp-case-4/./src/js/module/FilterByForm/index.js","webpack://1-gulp-case-4/./src/js/module/BranchLocator/index.js","webpack://1-gulp-case-4/./src/js/module/FilterModal/index.js","webpack://1-gulp-case-4/./src/js/module/Popup/index.js","webpack://1-gulp-case-4/./src/js/module/Leadership/index.js","webpack://1-gulp-case-4/./src/js/module/CounterAnimator/index.js"],"sourcesContent":["export const deviceWidth = {\r\n mac14: 1400,\r\n mac13: 1300,\r\n desktop: 1200,\r\n ipadpro: 1024,\r\n ipad: 992,\r\n tablet: 767,\r\n mobile: 576,\r\n}\r\n\r\n// Page Loader\r\nexport const pageLoaderRef = {\r\n targetClass: \".loader-first\",\r\n htmlClass: 'loadjs' // without dot\r\n}\r\n\r\n// SVG Converter\r\nexport const svgConverterRef = {\r\n targetClass: \".svg-convert\",\r\n afterConvertClass: \".svg-converted\"\r\n}\r\n\r\n// Responsive Handler\r\nexport const responsiveHandlerRef = {\r\n targetID: \"portrait-warnning\",\r\n}\r\n\r\n\r\n// MoreLessToggle\r\nexport const moreLessRef = {\r\n targetClass: '.toggle-more',\r\n activeClass: \"active\",\r\n clampClass: \"line-clamp-1\",\r\n closestParent: \".form-check-label\",\r\n parentAlignmentClass: \"d-flex\"\r\n}\r\n\r\n// PhoneInputHandler\r\n\r\nexport const phoneHandlerRef = {\r\n targetClass: \".phoneiti\",\r\n hiddenElementTargetClass: \".phone-hidden-field\"\r\n}\r\n\r\n// TabsHandler\r\nexport const tabModuleRef = {\r\n visibleProp: 'flex',\r\n attr: 'data-cards'\r\n}\r\n\r\n// RangeSlider\r\nexport const rangeSliderRef = {\r\n targetClass: '.range-slider_input',\r\n targetSliderFiller: '.range-slider-fill',\r\n targetValueContain: '.range-slider-value-contain',\r\n valueContain: '.range-slider-value'\r\n}\r\n\r\n// PromotionFilter\r\nexport const promotionFilterRef = {\r\n targetCard: '.promotion-card',\r\n dateAttr: 'data-date',\r\n titleAttr: 'data-title',\r\n nodataWrap: '.nodata-wrap'\r\n}\r\n\r\n// FilterCardsbyCat\r\nexport const filterByCatRef = {\r\n targetActive: 'swiper-slide-active',\r\n allAlias: 'all',\r\n horLayoutClass: 'new-covered-card--horizontal',\r\n attr: 'data-ref',\r\n hideClass: 'd-none',\r\n nodataWrap: '.nodata-wrap'\r\n}\r\n\r\n// FilterByForm\r\nexport const filterByFormRef = {\r\n indexTarget: 'cardOrder',\r\n allAlias: 'all',\r\n attr: 'data-ref',\r\n switch: 'on',\r\n attrVal: 'true',\r\n hideClass: 'd-none',\r\n popupClass: 'open',\r\n htmlClass: 'overflow-hidden',\r\n backdrop: 'backdrop',\r\n popup: 'filterOption',\r\n nodataWrap: '.nodata-wrap'\r\n}\r\n\r\n\r\nexport const branchLocatorRef = {\r\n listLocationsId: \"branch_list\",\r\n selectLocationId: \"DrLocation_m\",\r\n pinImg: \"/assets/svg/map-pin.svg\",\r\n searchInputId: \"onSearchFilter\",\r\n checkBoxName: \"BranchFacilities\",\r\n arabicPath: \"-ar\",\r\n selectTimingId: \"DrTiming_m\",\r\n};\r\n\r\nexport const apiURL = {\r\n servicesUrl : \"/api/getservicesapi\",\r\n dateUrl : \"/api/getavailabledaysapi\",\r\n timeUrl : \"/api/getdayavailabletimes\",\r\n}","import {\r\n deviceWidth\r\n} from \"../../utils/constant\";\r\nclass AccordianHandler {\r\n constructor(element) {\r\n this.handlers = document.querySelectorAll(element);\r\n\r\n if (this.handlers.length > 0) {\r\n this.initEventListeners();\r\n }\r\n }\r\n\r\n initEventListeners() {\r\n this.handlers.forEach((item) => {\r\n if (item.getAttribute('data-disableTillIpad') == \"true\") {\r\n if (window.innerWidth < deviceWidth.mobile) {\r\n item.addEventListener(\"click\", this.handleTargetClick.bind(this, item));\r\n }\r\n } else if (item.getAttribute('data-disableTillDesktop') == \"true\") {\r\n if (window.innerWidth < deviceWidth.desktop) {\r\n item.addEventListener(\"click\", this.handleTargetClick.bind(this, item));\r\n }\r\n } else {\r\n item.addEventListener(\"click\", this.handleTargetClick.bind(this, item));\r\n }\r\n });\r\n\r\n if (!this.handlers[0].getAttribute('data-sibling')) {\r\n document.addEventListener(\"click\", this.handleClickOutside.bind(this));\r\n }\r\n }\r\n\r\n handleTargetClick(target, event) {\r\n event.stopPropagation(); // Prevent document click event from being triggered\r\n this.activateCurrent(target);\r\n }\r\n\r\n handleClickOutside() {\r\n this.deactivateAll();\r\n }\r\n\r\n activateCurrent(target) {\r\n this.handlers.forEach((item) => {\r\n const isOpen = item.classList.contains(\"active\");\r\n\r\n item.classList.toggle(\"active\", item === target);\r\n\r\n let hasSibling = target.getAttribute(\"data-sibling\");\r\n\r\n if (hasSibling == \"true\") {\r\n if (!isOpen && item.classList.contains(\"active\")) {\r\n item.nextElementSibling.style.maxHeight = item.nextElementSibling.scrollHeight + \"px\";\r\n item.nextElementSibling.classList.add(\"opened\");\r\n } else {\r\n item.nextElementSibling.style.maxHeight = null;\r\n item.nextElementSibling.classList.remove(\"opened\");\r\n item.classList.remove(\"active\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n deactivateAll() {\r\n this.handlers.forEach((target) => {\r\n target.classList.remove(\"active\");\r\n });\r\n }\r\n}\r\n\r\n\r\nexport default AccordianHandler","import {\r\n deviceWidth\r\n} from \"../../utils/constant\";\r\n\r\nclass ShowHide {\r\n constructor(handler, closeHandler, deviceOnly = '', noanchor = false, backdrop = null) {\r\n this.handleBtn = document.querySelector(handler);\r\n this.deviceOnly = deviceOnly;\r\n this.noanchor = noanchor;\r\n this.closeHandler = closeHandler;\r\n // Backdrop Added in the popup 23 Jan\r\n this.backdrop = backdrop;\r\n this.targetBackdrop = null;\r\n this.closeBtn = null;\r\n this.targetContainer = null;\r\n this.init();\r\n }\r\n\r\n init() {\r\n if (this.handleBtn) {\r\n this.targetContainer = document.getElementById(this.handleBtn.getAttribute('data-ref'));\r\n\r\n this.handleBtn.addEventListener(\"click\", this.openContainer.bind(this));\r\n\r\n if (this.targetContainer) {\r\n this.closeBtn = this.targetContainer.querySelector(this.closeHandler)\r\n }\r\n }\r\n\r\n if (this.closeBtn) {\r\n this.closeBtn.addEventListener(\"click\", this.closeContainer.bind(this));\r\n }\r\n\r\n // Backdrop Updated in the popup 29 Jan\r\n this.targetBackdrop = document.querySelector(this.backdrop);\r\n if (this.targetBackdrop) {\r\n this.targetBackdrop.addEventListener(\"click\", this.closeBackdrop.bind(this));\r\n }\r\n \r\n window.addEventListener('hashchange', () => {\r\n const hash = window.location.hash;\r\n if (hash.includes(\"target1_q\")) {\r\n this.closeContainer(); // 'this' now correctly refers to the instance of ShowHide\r\n }\r\n \r\n });\r\n\r\n }\r\n\r\n openContainer(e) {\r\n if (this.deviceOnly == \"mobile\") {\r\n if (window.innerWidth < deviceWidth.mobile) {\r\n this.openContainerAction(e)\r\n }\r\n } else if (this.deviceOnly == 'ipad') {\r\n if (window.innerWidth < deviceWidth.ipadpro) {\r\n this.openContainerAction(e)\r\n }\r\n } else if (this.deviceOnly == 'desktop') {\r\n if (window.innerWidth > deviceWidth.desktop) {\r\n this.openContainerAction(e)\r\n }\r\n } else {\r\n this.openContainerAction(e);\r\n }\r\n }\r\n\r\n openContainerAction(current) {\r\n if (this.noanchor) {\r\n current.stopPropagation();\r\n }\r\n if (this.targetContainer) {\r\n this.targetContainer.classList.add('open');\r\n this.targetContainer.classList.remove('close');\r\n }\r\n // Backdrop Added in the popup 23 Jan\r\n if (this.targetBackdrop) {\r\n this.targetBackdrop.classList.add('open');\r\n this.handleBtn.closest(\"html\").classList.add(\"overflow-hidden\");\r\n }\r\n }\r\n\r\n closeContainer() {\r\n if (this.targetContainer) {\r\n this.targetContainer.classList.remove('open');\r\n this.targetContainer.classList.add('close');\r\n }\r\n if (this.targetBackdrop) {\r\n // Backdrop Added in the popup 23 Jan\r\n this.targetBackdrop.classList.remove('open');\r\n this.handleBtn.closest(\"html\").classList.remove(\"overflow-hidden\");\r\n }\r\n }\r\n\r\n closeBackdrop() {\r\n if (this.targetBackdrop) {\r\n this.targetContainer.classList.remove('open');\r\n this.targetBackdrop.classList.remove('open');\r\n this.handleBtn.closest(\"html\").classList.remove(\"overflow-hidden\");\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\nexport default ShowHide","class SwiperSlider {\r\n constructor(slider) {\r\n this.slider = slider;\r\n this.swiper = null;\r\n this.screenWidthEm = parseInt(window.innerWidth / 120);\r\n\r\n this.slidesParam = {\r\n observeParents: true,\r\n observer: true,\r\n watchSlidesProgress: true,\r\n slidesPerView: this.slider.getAttribute(\"data-slidesPerView\") || 1,\r\n spaceBetween: this.slider.getAttribute(\"data-spaceBetween\") || 0,\r\n loop: this.slider.getAttribute(\"data-sliderLoop\") ? true : false,\r\n centeredSlides: this.slider.getAttribute(\"data-centeredSlides\")\r\n ? true\r\n : false,\r\n slideToClickedSlide: this.slider.getAttribute(\"data-slideToClickedSlide\")\r\n ? true\r\n : false,\r\n };\r\n\r\n // Rewind\r\n if (this.slider.getAttribute(\"data-rewind\")) {\r\n this.slidesParam.rewind = this.slider.getAttribute(\"data-rewind\");\r\n }\r\n\r\n // Free Mode\r\n if (this.slider.getAttribute(\"data-freemode\")) {\r\n this.slidesParam.freeMode = true;\r\n }\r\n\r\n // Slide Change Speed\r\n if (this.slider.getAttribute(\"data-sliderSpeed\")) {\r\n this.slidesParam.speed = this.slider.getAttribute(\"data-sliderSpeed\");\r\n }\r\n\r\n // Slide Effect\r\n if (this.slider.getAttribute(\"data-effect\")) {\r\n this.slidesParam.effect = this.slider.getAttribute(\"data-effect\");\r\n if (this.slider.getAttribute(\"data-crossFade\")) {\r\n this.slidesParam.fadeEffect = {\r\n crossFade: true,\r\n };\r\n }\r\n }\r\n\r\n // Slider Pagination\r\n if (this.slider.getAttribute(\"data-pagination\") === \"true\") {\r\n let paginationClass = this.slider.getAttribute(\"data-paginationClass\")\r\n ? `.${this.slider.getAttribute(\"data-paginationClass\")} `\r\n : \"\";\r\n this.slidesParam.pagination = {\r\n el: `${paginationClass} .swiper-pagination`,\r\n clickable: true,\r\n dynamicBullets: this.slider.getAttribute(\"data-dynamicBullets\")\r\n ? true\r\n : false,\r\n };\r\n if (this.slider.getAttribute(\"data-pagination-number\") === \"true\") {\r\n this.slidesParam.pagination.renderBullet = function (index, className) {\r\n return '' + (index + 1) + ''; // Set pagination type to \"fraction\"\r\n }\r\n }\r\n }\r\n\r\n // Slider Scrollbar\r\n if (this.slider.getAttribute(\"data-scrollbar\") === \"true\") {\r\n let scrollbarClass = this.slider.getAttribute(\"data-scrollbarClass\")\r\n ? `.${this.slider.getAttribute(\"data-scrollbarClass\")} `\r\n : \"\";\r\n this.slidesParam.scrollbar = {\r\n el: `${scrollbarClass} .swiper-scrollbar`,\r\n clickable: true,\r\n };\r\n }\r\n\r\n // Slider Coverflow Effect\r\n if (this.slider.getAttribute(\"data-coverflowEffect\")) {\r\n let incomingString = JSON.parse(\r\n this.slider.getAttribute(\"data-coverflowEffect\")\r\n );\r\n\r\n this.slidesParam.coverflowEffect = {\r\n rotate: 0,\r\n scale: +incomingString.scale,\r\n depth: +incomingString.depth,\r\n stretch: +incomingString.stretch,\r\n modifier: 1,\r\n slideShadows: false,\r\n };\r\n if (this.slider.getAttribute(\"data-cover-center\")) {\r\n let slideCount = this.slider.querySelectorAll(\".swiper-slide\").length;\r\n if (slideCount > 2) {\r\n if (slideCount % 2 === 0) {\r\n this.slidesParam.initialSlide = slideCount / 2;\r\n } else {\r\n this.slidesParam.initialSlide = slideCount / 2 - 0.5;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Slider Navigation\r\n if (this.slider.getAttribute(\"data-navigation\") === \"true\") {\r\n let navigationClass = this.slider.getAttribute(\"data-navigationClass\")\r\n ? `.${this.slider.getAttribute(\"data-navigationClass\")} `\r\n : \"\";\r\n this.slidesParam.navigation = {\r\n nextEl: `${navigationClass} .swiper-button-next`,\r\n prevEl: `${navigationClass} .swiper-button-prev`,\r\n };\r\n }\r\n\r\n // Slider Autoplay\r\n if (this.slider.getAttribute(\"data-autoplay\") === \"true\") {\r\n if (this.slider.getAttribute(\"data-pauseonHover\") == \"true\") {\r\n this.slidesParam.autoplay = {\r\n delay: this.slider.getAttribute(\"data-autoplaySpeed\") || 3000,\r\n disableOnInteraction: true,\r\n };\r\n } else {\r\n this.slidesParam.autoplay = {\r\n delay: this.slider.getAttribute(\"data-autoplaySpeed\") || 3000,\r\n disableOnInteraction: false,\r\n };\r\n }\r\n }\r\n\r\n // Slider center slide feature\r\n if (this.slider.getAttribute(\"data-centeredSlides\") === \"true\") {\r\n this.slidesParam.centeredSlides = true;\r\n }\r\n\r\n // Slider Video Loading\r\n if (this.slider.getAttribute(\"data-videoLoader\") === \"true\") {\r\n this.slidesParam.on = {\r\n init: ({ realIndex, slides, pagination }) => {\r\n this.addIframe(realIndex, slides);\r\n this.changeSliderProgressTime(realIndex, slides, pagination);\r\n },\r\n beforeSlideChangeStart: ({ realIndex, slides }) => {\r\n this.removeIframe(realIndex, slides);\r\n },\r\n beforeTransitionStart: ({\r\n slides,\r\n pagination,\r\n snapIndex,\r\n }) => {\r\n this.changeSliderProgressTime(snapIndex, slides, pagination);\r\n },\r\n slideChangeTransitionEnd: ({\r\n slides,\r\n snapIndex\r\n }) => {\r\n this.addIframe(snapIndex, slides);\r\n },\r\n };\r\n }\r\n\r\n // Slider Break Points\r\n if (this.slider.getAttribute(\"data-breakpoints\")) {\r\n let parsedObjects = JSON.parse(\r\n this.slider.getAttribute(\"data-breakpoints\")\r\n );\r\n\r\n let stretch;\r\n let depth;\r\n // !parsedObjects[\"1200\"].coverflowEffect\r\n if (parsedObjects[\"1200\"] && parsedObjects[\"1200\"].coverflowEffect) {\r\n depth =\r\n (parsedObjects[\"1200\"].coverflowEffect.depth / 16) *\r\n this.screenWidthEm;\r\n stretch =\r\n (parsedObjects[\"1200\"].coverflowEffect.stretch / 16) *\r\n this.screenWidthEm;\r\n parsedObjects[\"1200\"].coverflowEffect.rotate = 0;\r\n parsedObjects[\"1200\"].coverflowEffect.depth = +depth;\r\n parsedObjects[\"1200\"].coverflowEffect.stretch = +stretch;\r\n parsedObjects[\"1200\"].coverflowEffect.scale =\r\n +parsedObjects[\"1200\"].coverflowEffect.scale;\r\n parsedObjects[\"1200\"].coverflowEffect.modifier = 1;\r\n parsedObjects[\"1200\"].coverflowEffect.slideShadows = false;\r\n }\r\n\r\n this.slidesParam.breakpoints = {\r\n ...parsedObjects,\r\n };\r\n }\r\n\r\n // Slider has THumb\r\n if (this.slider.getAttribute(\"data-thumbSliderId\")) {\r\n let getSwiperThumb = document.getElementById(\r\n `${this.slider.getAttribute(\"data-thumbSliderId\")}`\r\n );\r\n if (getSwiperThumb) {\r\n this.slidesParam.thumbs = {\r\n swiper: getSwiperThumb.swiper,\r\n };\r\n }\r\n }\r\n\r\n // Slider has disable on desktop or ipad\r\n if (this.slider.getAttribute(\"data-disableDesktop\")) {\r\n if (window.innerWidth < 1200) {\r\n this.initSwiper();\r\n }\r\n } else if (this.slider.getAttribute(\"data-disableIpad\")) {\r\n if (window.innerWidth < 767) {\r\n this.initSwiper();\r\n }\r\n } else {\r\n this.initSwiper();\r\n }\r\n // MutationObserver to detect changes in the lang attribute\r\n const observer = new MutationObserver((mutationsList, observer) => {\r\n for (let mutation of mutationsList) {\r\n if (\r\n mutation.type === \"attributes\" &&\r\n mutation.attributeName === \"lang\"\r\n ) {\r\n this.reinitializeSwiper();\r\n break;\r\n }\r\n }\r\n });\r\n\r\n // Configure the MutationObserver to observe changes in the lang attribute\r\n const observerConfig = { attributes: true, attributeFilter: [\"lang\"] };\r\n observer.observe(document.documentElement, observerConfig);\r\n }\r\n\r\n addIframe(index, slides) {\r\n let videoContainer = slides[index].querySelector(\".iframeData\");\r\n if (videoContainer) {\r\n let videoType = videoContainer.getAttribute(\"data-video-type\");\r\n let videoElement;\r\n if (videoType == \"iframe\") {\r\n videoElement =\r\n '';\r\n } else {\r\n videoElement =\r\n '';\r\n }\r\n videoContainer.innerHTML = videoElement;\r\n }\r\n }\r\n\r\n removeIframe(index, slides) {\r\n let videoElement = slides[index].querySelector(\".iframeVidz\");\r\n if (videoElement) {\r\n videoElement.remove();\r\n }\r\n }\r\n\r\n changeSliderProgressTime(index, slides, pagination) {\r\n let activeSlide = slides[index];\r\n let swiperAutoPlayTime = activeSlide.dataset.swiperAutoplay;\r\n if (swiperAutoPlayTime) {\r\n let progressBarTime = swiperAutoPlayTime / 1000 + \"s\";\r\n let activeBullet = pagination.bullets[index];\r\n activeBullet.style.setProperty(\"--cubic-bezier-values\", progressBarTime);\r\n }\r\n }\r\n\r\n initSwiper() {\r\n if (\r\n this.slider &&\r\n this.slider.children &&\r\n this.slider.children.length > 0\r\n ) {\r\n this.swiper = new Swiper(this.slider, {\r\n ...this.slidesParam,\r\n });\r\n if (this.slider.getAttribute(\"data-pauseOnHover\") == \"true\") {\r\n this.slider.addEventListener(\"mouseover\", (event) => {\r\n this.slider.swiper.autoplay.stop();\r\n });\r\n this.slider.addEventListener(\"mouseleave\", (event) => {\r\n this.slider.swiper.autoplay.start();\r\n });\r\n }\r\n }\r\n }\r\n\r\n reinitializeSwiper() {\r\n if (this.swiper) {\r\n this.swiper.destroy(); // Destroy current Swiper instance\r\n }\r\n this.initSwiper(); // Initialize Swiper again\r\n }\r\n}\r\n\r\nexport default SwiperSlider;\r\n","class CustomDropdown {\r\n constructor(dropdown, anchor = false) {\r\n this.dropdownRef = dropdown;\r\n this.dropdown = document.querySelector(dropdown);\r\n this.dropdownValue = document.querySelector(`${this.dropdownRef} .dropdown-selected`);\r\n this.dropdownItems = document.querySelectorAll(`${this.dropdownRef} .dropdown-item`);\r\n if (this.dropdown) {\r\n this.initDropdown();\r\n }\r\n this.anchor = anchor;\r\n }\r\n\r\n initDropdown() {\r\n this.dropdown.addEventListener(\"click\", this.setupEventListeners.bind(this, this.dropdown));\r\n document.addEventListener(\"click\", this.eventOutside.bind(this));\r\n this.dropdownItems.forEach(item => item.addEventListener(\"click\", this.handleDropdownItem.bind(this, item)))\r\n }\r\n\r\n setupEventListeners(el, item) {\r\n if(el.classList.contains('active')) {\r\n el.classList.remove('active'); \r\n } else {\r\n el.classList.add('active');\r\n }\r\n\r\n }\r\n\r\n eventOutside(e) {\r\n let curObj = e.target;\r\n if (!curObj.closest(this.dropdownRef)) {\r\n if (this.dropdown.classList.contains('active')) {\r\n this.dropdown.classList.remove(\"active\");\r\n }\r\n } else {\r\n if (curObj.closest(`${this.dropdownRef} .dropdown-item`)) {\r\n this.dropdown.classList.remove(\"active\");\r\n }\r\n }\r\n }\r\n\r\n handleDropdownItem(el, current) {\r\n if (this.anchor == false) {\r\n let itemValue = el.getAttribute('data-value');\r\n let itemflag = el.getAttribute('data-flag');\r\n let val = this.dropdownValue.querySelector(`.selected-value`);\r\n let flag = this.dropdownValue.querySelector(`.selected-flag > img`);\r\n val.innerHTML = itemValue;\r\n if (itemflag) {\r\n flag.src = itemflag;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default CustomDropdown","import { rangeSliderRef } from \"../../utils/constant\"\r\n\r\nclass RangeSlider {\r\n constructor(rangeSliderElement) {\r\n this.bar = rangeSliderElement.querySelector(rangeSliderRef.targetClass);\r\n this.filler = rangeSliderElement.querySelector(rangeSliderRef.targetSliderFiller);\r\n this.valContainer = rangeSliderElement.querySelector(rangeSliderRef.targetValueContain);\r\n if(this.bar) {\r\n\r\n this.minVal = +this.bar.getAttribute('min');\r\n this.maxVal = +this.bar.getAttribute('max');\r\n this.updateBar(this.bar.value);\r\n this.bar.addEventListener('input', () => this.updateBar(this.bar.value));\r\n }\r\n }\r\n\r\n updateBar(val) {\r\n if (this.valContainer) {\r\n let valueDiv = this.valContainer.querySelector(rangeSliderRef.valueContain);\r\n valueDiv.innerHTML = (+val).toLocaleString();\r\n const fillerVal = `${(((+val) - this.minVal) * 100) / (this.maxVal - this.minVal)}%`;\r\n if(fillerVal){\r\n\r\n let checkLang = document.querySelector(\"html\").getAttribute('lang')\r\n if (checkLang == \"ar\") {\r\n this.valContainer.style.right = fillerVal;\r\n } else {\r\n this.valContainer.style.left = fillerVal;\r\n }\r\n this.filler.style.width = fillerVal;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default RangeSlider;","class HomeFinanceCalc {\r\n constructor(input1, input2, displayVal) {\r\n this.amountInput = document.getElementById(input1);\r\n this.monthsInput = document.getElementById(input2);\r\n this.resultElement = document.getElementById(displayVal);\r\n\r\n this.initCalc();\r\n }\r\n\r\n initCalc() {\r\n if (this.amountInput) {\r\n this.calculateTotalCost();\r\n this.amountInput.addEventListener('input', (e) => this.calculateTotalCost());\r\n this.monthsInput.addEventListener('input', (e) => this.calculateTotalCost());\r\n }\r\n }\r\n\r\n calculateTotalCost() {\r\n const amount = +this.amountInput.value;\r\n const months = +this.monthsInput.value;\r\n let profitRate = (+this.resultElement.getAttribute('data-rate')) || 0;\r\n let a = (+profitRate / 100 / 12) || 1;\r\n let b = months / 1.835 / months;\r\n let c = amount / months;\r\n let totalCost = ((a * amount) * b) + c;\r\n this.resultElement.textContent = `${totalCost.toLocaleString()}`;\r\n }\r\n}\r\n\r\nexport default HomeFinanceCalc","class LanguageSwitcher {\r\n constructor(handler) {\r\n this.handler = document.querySelectorAll(handler);;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.handler.forEach(item => item.addEventListener(\"click\", (e) => this.switchURL(e)));\r\n }\r\n\r\n switchURL(e) {\r\n e.stopPropagation();\r\n let currentURL = window.location.href;\r\n let pathname= window.location.pathname;\r\n let newPath = '';\r\n \r\n let currentLanguageCode= e.currentTarget.getAttribute('data-languagecode');\r\n let alternatelanguageCode= e.currentTarget.getAttribute('data-alternatelanguagecode');\r\n if(!(currentLanguageCode && alternatelanguageCode))\r\n {\r\n return;\r\n }\r\n if(pathname===\"/\")\r\n {\r\n let newURL = currentURL.replace(/\\/$/, alternatelanguageCode);\r\n window.location.href = newURL;\r\n }\r\n else\r\n {\r\n if (pathname.includes(currentLanguageCode)) {\r\n newPath = pathname.replace(currentLanguageCode, alternatelanguageCode);\r\n } else {\r\n newPath = alternatelanguageCode + pathname;\r\n }\r\n \r\n let newURL = currentURL.replace(pathname, newPath);\r\n window.location.href = newURL;\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default LanguageSwitcher","class SearchHandler {\r\n constructor(handler) {\r\n this.searchForm = document.querySelector(handler);\r\n this.init();\r\n }\r\n init() {\r\n if (this.searchForm) {\r\n this.searchForm.addEventListener(\"submit\", this.submitForm.bind(this));\r\n }\r\n }\r\n submitForm(e) {\r\n e.preventDefault();\r\n \r\n let searchInput = this.searchForm.getElementsByTagName(\"input\");\r\n if(searchInput && searchInput.length>0)\r\n {\r\n let searchtext= searchInput[0].value;\r\n const url = this.searchForm.getAttribute(\"data-url\");\r\n let encodedSearchInput = encodeURIComponent(searchtext);\r\n window.location.href = url + \"?key=\" + encodedSearchInput;\r\n }\r\n \r\n };\r\n \r\n \r\n }\r\n \r\n export default SearchHandler;","class PropertySlider {\r\n constructor(gallery) {\r\n this.gallery = gallery\r\n this.slider = this.gallery.querySelectorAll('.gallery-slider')[0];\r\n this.thumbs = this.gallery.querySelectorAll('.gallery-thumbs')[0];\r\n this.swiperWrapper = this.slider.querySelectorAll('.swiper-wrapper')[0];\r\n this.swiper = null;\r\n this.thumbswiper = null;\r\n this.initSwiper()\r\n \r\n }\r\n \r\n initSwiper() {\r\n \r\n if (\r\n this.slider &&\r\n this.slider.children &&\r\n this.slider.children.length > 0\r\n ) {\r\n this.swiper = new Swiper(this.slider, {\r\n\r\n slidesPerView: 1,\r\n centeredSlides: true,\r\n loop: true,\r\n loopedSlides: this.swiperWrapper.children.length,\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n });\r\n this.thumbswiper = new Swiper (this.thumbs, {\r\n slidesPerView: 'auto',\r\n spaceBetween: 10,\r\n centeredSlides: true,\r\n loop: false,\r\n slideToClickedSlide: true,\r\n });\r\n this.swiper.controller.control = this.thumbswiper;\r\n this.thumbswiper.controller.control = this.swiper;\r\n }\r\n }\r\n \r\n }\r\n \r\n export default PropertySlider;\r\n ","import SVGConverter from \"./module/SVGConverter\";\r\nimport AccordianHandler from \"./module/AccordianHandler\";\r\nimport ShowHide from \"./module/ShowHide\";\r\nimport SwiperFilter from \"./module/SwiperFilter\";\r\nimport HeaderMenuController from \"./module/HeaderMenuController\";\r\nimport SwiperSlider from \"./module/SwiperSlider\";\r\nimport FontResizerController from \"./module/FontResizerController\";\r\nimport PageLoader from \"./module/PageLoader\";\r\nimport NavbarToggler from \"./module/NavbarToggler\";\r\nimport CustomDropdown from \"./module/CustomDropdown\";\r\nimport ResponsiveHandler from \"./module/ResponsiveHandler\";\r\nimport SliderNavigation from \"./module/SliderNavigation\";\r\nimport MoreLessToggle from \"./module/MoreLessToggle\";\r\nimport PromotionCardManager from \"./module/PromotionCardManager\";\r\nimport PhoneInputHandler from \"./module/PhoneInputHandler\";\r\nimport RangeSlider from \"./module/RangeSlider\";\r\nimport HomeFinanceCalc from \"./module/HomeFinanceCalc\";\r\nimport CarFinanceCalc from \"./module/CarFinanceCalc\";\r\nimport LanguageSwithcer from \"./module/LanguageSwitcher\";\r\nimport PromotionFilter from \"./module/PromotionFilter\";\r\nimport FilterCardsbyCat from \"./module/FilterCardsbyCat\";\r\nimport FilterByForm from \"./module/FilterByForm\";\r\nimport BranchLocator from \"./module/BranchLocator\";\r\nimport SearchHandler from \"./module/SearchHandler\";\r\nimport FileRackSlider from \"./module/FileRackSlider\";\r\nimport FilterModal from \"./module/FilterModal\";\r\nimport PropertySlider from \"./module/PropertySlider\";\r\nimport Popup from \"./module/Popup\";\r\nimport Leadership from \"./module/Leadership\";\r\nimport CounterAnimator from \"./module/CounterAnimator\";\r\n\r\n\r\n// Generic Module for apply on all Pages\r\n\r\n// Page loader Module use for page load\r\nconst pageLoader = new PageLoader();\r\n\r\n// SVG Converter Module use for convert SVG Images to code\r\nconst svgConverterInstance = new SVGConverter();\r\n\r\n// Font Resizer use for Dekstop responsive screens auto adjust the size of the element with font size.\r\nconst desktopResponsive = new FontResizerController();\r\n\r\n// ResponsiveHandler use disbale Landscape Mobile mode\r\nconst mobileLandscapeOff = new ResponsiveHandler();\r\n\r\n// Switch URL Arabic to English\r\nconst swithchUrl = new LanguageSwithcer(\".switch-language\");\r\nconst swithchUrlMobile = new LanguageSwithcer(\r\n \"#languageSwitcher .dropdown-item\"\r\n);\r\n\r\n// Use as per Requirement\r\n\r\n// Module use For Accordian File Rack.\r\nconst fileRack = new FileRackSlider(\r\n \".investor-relations\",\r\n \".satisfactory-card\"\r\n); // Target Section, Target Element\r\n\r\n// Show Hide Module\r\nconst showHideSearchBar = new ShowHide(\".search-btn\", \".search-close\"); // Target Button, Close Button\r\n\r\n// AccordianHandler use for Accrodian\r\nconst footerMobileMenu = new AccordianHandler(\".dropdown-footer\"); // Target Button or Anchor\r\nconst mobileBurgerMenu = new AccordianHandler(\".dropdown-toggle\"); // Target Button or Anchor\r\nconst subMenu = new AccordianHandler(\".submenu\"); // Target Button or Anchor\r\n\r\nconst dropdownBtn = new AccordianHandler(\".dropdown-btn\");\r\n\r\n// CustomDropdown Module use for dropdown selection.\r\nconst regionalDropdown = new CustomDropdown(\"#regionSwitcher\", true); // Target Dropdown Container\r\nconst languageDropdown = new CustomDropdown(\"#languageSwitcher\"); // Target Dropdown Container\r\nconst loginBtnDropdown = new CustomDropdown(\"#loginAnchor\", true); // Target Dropdown Container only clickable not selected\r\nconst loginBtnDropdown1 = new CustomDropdown(\"#loginAnchorMobile\", true); // Target Dropdown Container only clickable not selected\r\n\r\n// Generic Slider Module Create slider which contains the class swiper.\r\nconst swiperSliders = document.querySelectorAll(\".swiper\");\r\nswiperSliders.forEach((item) => new SwiperSlider(item));\r\n\r\n//Propert Slider\r\nconst propertySlider = document.querySelectorAll(\".gallery\");\r\npropertySlider.forEach((item) => new PropertySlider(item));\r\n\r\n\r\n// Swiper Filter use for filter swiper slides\r\nconst swiperFilter = new SwiperFilter(\".slider-filters > li\"); // Swiper Filter Tabs with Parent Class or ID\r\n\r\n// Header Controlelr Modile Menu\r\nconst navbarToggler = new NavbarToggler(\r\n \".mobile-header .navbar-toggler\",\r\n \".mobile-header\"\r\n);\r\n\r\n// Header Controlelr Modile Menu\r\nconst headerMenuController = new HeaderMenuController(\r\n \".menu-list\",\r\n \".single-wrapper\",\r\n \".singleVisa-cards\",\r\n \".card-list\",\r\n \".desktop-header\"\r\n);\r\n\r\n// Range Slider\r\nlet rangeBars = document.querySelectorAll(\".range-slider\"); // Targeted Slider Class\r\nrangeBars.forEach((item) => new RangeSlider(item));\r\n\r\n// Finance CalculatorhomeFinance\r\nconst homeFinance = new HomeFinanceCalc(\r\n \"slider_input_home_amount\",\r\n \"slider_input_home_months\",\r\n \"montly-payment-home\"\r\n);\r\nconst carFinance = new CarFinanceCalc(\r\n \"slider_input_car_amount\",\r\n \"slider_input_car_months\",\r\n \"montly-payment-car\"\r\n);\r\nconst homeFinanceDuplicate = new HomeFinanceCalc(\r\n \"slider_input_home1_amount\",\r\n \"slider_input_home1_months\",\r\n \"montly-payment-home1\"\r\n);\r\n\r\n// Inner Page Module\r\n\r\n// Slider Navigation use for Swithcing to specific Slide\r\nconst slideAnchorHandler = new SliderNavigation(\r\n \".key-benefits__anchors li\",\r\n \"key-benefits\"\r\n); // Tab or Anchor, Swiper Slider ID\r\n\r\n// Show Hide Module\r\nconst showHideForm = new ShowHide(\r\n \"#accountFormBtn\",\r\n \"#closeForm\",\r\n \"mobile\",\r\n true\r\n); // target Button or Anchor, close button, device only (optional), stopPropagation\r\nconst filterPopup = new ShowHide(\r\n \"#openFilterBtn\",\r\n \"#closeFilter\",\r\n \"\",\r\n false,\r\n \"#backdrop\"\r\n);\r\n\r\n// More or Less Content Module\r\nconst showHidenText = new MoreLessToggle();\r\n\r\n// Phone Code Number\r\nconst phoneCode = new PhoneInputHandler();\r\n\r\n// Promotion Card Hover\r\nconst promotionCardManager = new PromotionCardManager(\".list--modifier\");\r\n\r\n// Promotion Card Filter\r\nconst promotionFilters = new PromotionFilter(\r\n \"filterAction\",\r\n \"monthSelect\",\r\n \"yearSelect\",\r\n \"searchInput\",\r\n \"resetButton\"\r\n);\r\n\r\n// Adib Card Filters\r\nconst filterHandler = new FilterCardsbyCat(\r\n \".adib-cards__category .swiper-slide\",\r\n \".covered-wrapper\",\r\n \"filterForm\",\r\n \"card-title\"\r\n); // handlers class, cards class\r\nconst filterFormCard = new FilterByForm(\r\n \".covered-wrapper\",\r\n \"filterForm\",\r\n \".adib-cards__category .swiper-slide-active\"\r\n); // handlers class, cards class, active Category\r\n\r\n// Branch Locator\r\nconst branchLocator = new BranchLocator(\"map\"); // map id, english data, ARABIC DATA\r\nwindow.initMap = branchLocator.initMap.bind(branchLocator);\r\n\r\n// Search bar\r\nconst searchHandler = new SearchHandler(\r\n \"#search-form\"\r\n); //redirects page after searching\r\n\r\nconst searchHandlerMobile = new SearchHandler(\r\n \"#search-form-mobile\"\r\n); \r\nconst filterModalInstance = new FilterModal('.filter-modal', '.filter-title-mobile');\r\n\r\nconst popup = new Popup(\"modals\");\r\n\r\nconst leadership = new Leadership(\"backdrop\");\r\n\r\nconst counterAnim = new CounterAnimator(\".milestone-card\", \"in-view\", { rootMargin: \"0px\", threshold: 0.5 });\r\n\r\n","import { pageLoaderRef } from \"../../utils/constant\";\r\n\r\n\r\nclass PageLoader {\r\n constructor() {\r\n this.init();\r\n }\r\n\r\n init() {\r\n window.addEventListener('load', () => this.pageLoader());\r\n }\r\n\r\n pageLoader() {\r\n setTimeout(() => {\r\n const loaderFirst = document.querySelector(pageLoaderRef.targetClass);\r\n\r\n if (loaderFirst) {\r\n loaderFirst.style.display = 'none';\r\n document.querySelector(\"html\").classList.remove(pageLoaderRef.htmlClass);\r\n }\r\n }, 300);\r\n }\r\n}\r\n\r\nexport default PageLoader","import { svgConverterRef } from \"../../utils/constant\";\r\n\r\nclass SVGConverter {\r\n constructor() {\r\n this.convertSVGs();\r\n }\r\n\r\n convertSVGs() {\r\n const svgs = document.querySelectorAll(`img${svgConverterRef.targetClass}`);\r\n svgs.forEach((el) => {\r\n const imgID = el.getAttribute(\"id\");\r\n const imgClass = el.getAttribute(\"class\");\r\n const imgURL = el.getAttribute(\"src\");\r\n\r\n fetch(imgURL)\r\n .then((response) => response.text())\r\n .then((data) => {\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(data, \"text/html\");\r\n let svg = xmlDoc.querySelector(\"svg\");\r\n\r\n if (typeof imgID !== \"undefined\") {\r\n svg.setAttribute(\"id\", imgID);\r\n }\r\n\r\n if (typeof imgClass !== \"undefined\") {\r\n svg.setAttribute(\"class\", imgClass + \" \" + svgConverterRef.afterConvertClass);\r\n }\r\n\r\n svg.removeAttribute(\"xmlns:a\");\r\n\r\n el.parentNode.replaceChild(svg, el);\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default SVGConverter","import {\r\n deviceWidth\r\n} from \"../../utils/constant\";\r\n\r\nclass FontResizerController {\r\n constructor() {\r\n this.init();\r\n }\r\n init() {\r\n window.addEventListener('load', () => window.innerWidth > deviceWidth.desktop && this.resizeFont());\r\n window.addEventListener('resize', () => window.innerWidth > deviceWidth.desktop && !(window.innerWidth < deviceWidth.mac14 && window.innerWidth > deviceWidth.mac13 && window.innerHeight > 900) && this.resizeFont());\r\n }\r\n\r\n resizeFont() {\r\n const perc = parseInt(window.innerWidth) / 120;\r\n document.body.style.fontSize = perc + 'px';\r\n }\r\n}\r\n\r\nexport default FontResizerController;","import { responsiveHandlerRef } from \"../../utils/constant\";\r\n\r\nclass ResponsiveHandler {\r\n constructor() {\r\n this.init();\r\n }\r\n\r\n init() {\r\n window.addEventListener('resize', () => this.landscapeModeOff());\r\n window.addEventListener('load', () => this.landscapeModeOff());\r\n }\r\n\r\n landscapeModeOff() {\r\n const portraitWarning = document.getElementById(responsiveHandlerRef.targetID);\r\n if (window.innerHeight < 450 && window.innerWidth > 480 && window.innerWidth < 820) {\r\n if (portraitWarning) {\r\n portraitWarning.style.display = \"flex\";\r\n }\r\n } else {\r\n if (portraitWarning) {\r\n portraitWarning.style.display = \"none\";\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default ResponsiveHandler","import { deviceWidth } from \"../../utils/constant\";\r\n\r\nclass FileRackSlider {\r\n constructor(container, element) {\r\n this.screenWidth = window.innerWidth;\r\n this.container = document.querySelectorAll(container);\r\n this.handlerTarget = element;\r\n this.init();\r\n }\r\n\r\n init() {\r\n window.addEventListener(\"load\", () => this.activateSection());\r\n }\r\n\r\n activateSection() {\r\n if (this.container) {\r\n setTimeout(() => {\r\n this.container.forEach((item) => {\r\n const sectionWrap = item.querySelector(\".satisfy-wrapper\");\r\n let resize = 14;\r\n let absheight = 16;\r\n if (this.screenWidth > deviceWidth.desktop) {\r\n resize = parseInt(this.screenWidth / 120);\r\n absheight = 28;\r\n }\r\n let handlers = item.querySelectorAll(this.handlerTarget);\r\n if (handlers.length > 1) {\r\n const calculatedHeight =\r\n sectionWrap.offsetHeight - absheight * resize;\r\n item.style.height = calculatedHeight / resize + \"em\";\r\n handlers.forEach((item) =>\r\n item.addEventListener(\r\n \"click\",\r\n this.handleTargetClick.bind(this, item, handlers)\r\n )\r\n );\r\n } else {\r\n sectionWrap.style.position = \"relative\";\r\n }\r\n });\r\n }, 3000);\r\n }\r\n }\r\n\r\n handleTargetClick(el, allHandlers, current) {\r\n current.stopPropagation();\r\n allHandlers.forEach((item) => {\r\n if (item === el) {\r\n item.classList.add(\"active\");\r\n } else {\r\n item.classList.remove(\"active\");\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default FileRackSlider;\r\n","class SwiperFilter {\r\n constructor(filters) {\r\n this.cardsFilters = document.querySelectorAll(filters);\r\n this.initializeFilters();\r\n }\r\n\r\n initializeFilters() {\r\n this.cardsFilters.forEach((item) =>\r\n item.addEventListener(\"click\", (e) => this.filterAction(item))\r\n );\r\n }\r\n\r\n filterAction(filterAnchor) {\r\n this.cardsFilters.forEach((item) => item.classList.remove(\"active\"));\r\n let slider = document.getElementById(\r\n `${this.cardsFilters[0].parentElement.getAttribute(\"data-filterSlideRef\")}`\r\n );\r\n let filter = filterAnchor.getAttribute(\"data-ref\");\r\n filterAnchor.classList.add(\"active\");\r\n if (slider) {\r\n let slides = slider.querySelectorAll(\".swiper-wrapper > div\");\r\n slides.forEach((item) => {\r\n if (filter == \"all\") {\r\n this.updateSlideClasses(item, \"swiper-slide\");\r\n } else {\r\n if (item.getAttribute(\"data-filter\") == filter) {\r\n this.updateSlideClasses(item, \"swiper-slide\");\r\n } else {\r\n this.updateSlideClasses(item, \"non-swiper-slide\");\r\n }\r\n }\r\n });\r\n this.updateSwiper(slider);\r\n }\r\n }\r\n\r\n updateSlideClasses(item, className) {\r\n item.removeAttribute(\"class\");\r\n item.classList.add(className);\r\n }\r\n\r\n updateSwiper(slider) {\r\n let swiper = slider.swiper;\r\n swiper.updateSize();\r\n swiper.updateSlides();\r\n swiper.updateProgress();\r\n swiper.updateSlidesClasses();\r\n let slideCount = swiper.slides.length;\r\n if (slideCount > 2) {\r\n if(slideCount % 2 === 0) {\r\n swiper.slideTo(slideCount / 2);\r\n } else {\r\n swiper.slideTo(slideCount / 2) - .5;\r\n }\r\n } else {\r\n swiper.slideTo(0);\r\n }\r\n }\r\n}\r\n\r\nexport default SwiperFilter","class NavbarToggler {\r\n constructor(togglerClass, mobileHeaderClass) {\r\n this.toggler = document.querySelector(togglerClass);\r\n this.mobileHeader = document.querySelector(mobileHeaderClass);\r\n this.htmlTag = document.querySelector('html');\r\n\r\n if (this.toggler) {\r\n this.toggler.addEventListener(\"click\", this.toggleNavbar.bind(this));\r\n }\r\n }\r\n\r\n toggleNavbar() {\r\n if (this.mobileHeader && this.htmlTag) {\r\n this.mobileHeader.classList.toggle('open');\r\n this.htmlTag.classList.toggle('overflow-hidden');\r\n }\r\n }\r\n}\r\nexport default NavbarToggler","import {\r\n deviceWidth\r\n} from \"../../utils/constant\";\r\n\r\nclass HeaderMenuController {\r\n constructor(menuSelector, contentSelector, cardSelector, cardListSelector, headerSelector, stickyOffset) {\r\n this.menuItems = document.querySelectorAll(menuSelector);\r\n this.contentItems = document.querySelectorAll(contentSelector);\r\n this.cardItems = document.querySelectorAll(cardSelector);\r\n this.spans = [...document.body.querySelectorAll(cardListSelector)];\r\n this.header = document.querySelector(headerSelector);\r\n this.stickyOffset = stickyOffset || 0;\r\n\r\n this.setActive = this.setActive.bind(this);\r\n this.setActive1 = this.setActive1.bind(this);\r\n this.removeActive = this.removeActive.bind(this);\r\n this.handleScroll = this.handleScroll.bind(this);\r\n\r\n // Check if window width is greater than iPad width before attaching event listeners\r\n if (window.innerWidth > deviceWidth.ipad) {\r\n if (this.menuItems) {\r\n this.menuItems.forEach((item) => item.addEventListener(\"mouseover\", (e) => this.setActive(item)));\r\n }\r\n\r\n if (this.contentItems) {\r\n this.contentItems.forEach((contentItem) => {\r\n contentItem.style.display = \"none\";\r\n });\r\n }\r\n\r\n if (this.cardItems && this.spans) {\r\n this.cardItems.forEach((cardItem) => {\r\n cardItem.style.display = \"none\";\r\n });\r\n\r\n this.spans.forEach((el) => {\r\n el.addEventListener(\"mouseover\", (e) => this.setActive1(el));\r\n el.addEventListener(\"mouseleave\", () => this.removeActive(el));\r\n });\r\n }\r\n\r\n window.addEventListener(\"scroll\", this.handleScroll);\r\n this.handleScroll(); // Initial check\r\n }\r\n }\r\n\r\n setActive(el) {\r\n [\r\n ...el.parentElement.parentElement.parentElement.parentElement.children,\r\n ].forEach((sib) => {\r\n sib.querySelectorAll(\".menu-list\").forEach((itemsib) => {\r\n itemsib.classList.remove(\"active\");\r\n });\r\n });\r\n\r\n this.contentItems.forEach((contentsib) => {\r\n contentsib.style.display = \"none\";\r\n });\r\n\r\n this.cardItems.forEach((cardItem) => {\r\n cardItem.style.display = \"none\";\r\n });\r\n\r\n el.classList.add(\"active\");\r\n let activetabcontentid = el.getAttribute(\"data-src\");\r\n let tabc = document.getElementById(activetabcontentid);\r\n if (tabc) {\r\n tabc.style.display = \"block\";\r\n }\r\n }\r\n\r\n setActive1(el) {\r\n [\r\n ...el.parentElement.parentElement.parentElement.parentElement.children,\r\n ].forEach((sib) => {\r\n sib.querySelectorAll(\".card-list\").forEach((itemsib) => {\r\n itemsib.classList.remove(\"active\");\r\n });\r\n });\r\n\r\n this.cardItems.forEach((cardItem) => {\r\n cardItem.style.display = \"none\";\r\n });\r\n\r\n el.classList.add(\"active\");\r\n let activetabcontentid = el.getAttribute(\"data-id\");\r\n let tabc = document.getElementById(activetabcontentid);\r\n if (tabc) {\r\n tabc.style.display = \"block\";\r\n }\r\n }\r\n\r\n removeActive(el) {\r\n el.classList.remove(\"active\");\r\n\r\n this.cardItems.forEach((cardItem) => {\r\n cardItem.style.display = \"none\";\r\n });\r\n }\r\n handleScroll() {\r\n if (window.pageYOffset > this.stickyOffset) {\r\n this.header && this.header.classList.add(\"sticky\");\r\n } else {\r\n this.header && this.header.classList.remove(\"sticky\");\r\n }\r\n }\r\n}\r\n\r\nexport default HeaderMenuController","class CarFinanceCalc {\r\n constructor(input1, input2, displayVal, profitRate) {\r\n this.amountInput = document.getElementById(input1);\r\n this.monthsInput = document.getElementById(input2);\r\n this.resultElement = document.getElementById(displayVal);\r\n this.initCalc();\r\n }\r\n\r\n initCalc() {\r\n if (this.amountInput) {\r\n this.calculateTotalCost();\r\n this.amountInput.addEventListener('input', (e) => this.calculateTotalCost());\r\n this.monthsInput.addEventListener('input', (e) => this.calculateTotalCost());\r\n }\r\n }\r\n\r\n calculateTotalCost() {\r\n const amount = +this.amountInput.value;\r\n const months = +this.monthsInput.value;\r\n let profitRate = (+this.resultElement.getAttribute('data-rate'));\r\n let a = (profitRate || 1) * amount * months / 12;\r\n const totalCost = ((amount + a) / months).toLocaleString();\r\n\r\n this.resultElement.textContent = `${totalCost}`;\r\n }\r\n}\r\n\r\nexport default CarFinanceCalc","class SlideAnchorHandler {\r\n constructor(selector, containerId) {\r\n this.slidesAnchors = document.querySelectorAll(selector);\r\n this.containerId = containerId;\r\n\r\n if (this.slidesAnchors.length > 0) {\r\n this.attachEventListeners();\r\n }\r\n }\r\n\r\n attachEventListeners() {\r\n this.slidesAnchors.forEach(item => {\r\n item.addEventListener(\"click\", this.handleAnchorClick.bind(this));\r\n });\r\n }\r\n\r\n handleAnchorClick(e) {\r\n const index = e.target.parentElement.getAttribute('data-index');\r\n const container = document.getElementById(this.containerId);\r\n if (container && container.swiper) {\r\n container.swiper.slideTo(index, 2000);\r\n }\r\n }\r\n}\r\n\r\n\r\nexport default SlideAnchorHandler","import {\r\n moreLessRef\r\n} from \"../../utils/constant\";\r\n\r\nclass MoreLessToggle {\r\n constructor() {\r\n this.elements = document.querySelectorAll(moreLessRef.targetClass);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.elements.forEach(item => {\r\n item.textContent = item.dataset.more;\r\n item.addEventListener(\"click\", this.toggle.bind(this));\r\n })\r\n }\r\n\r\n toggle(evt) {\r\n evt.preventDefault();\r\n const currentEvtObj = evt.target;\r\n\r\n if (!currentEvtObj.classList.contains(moreLessRef.activeClass)) {\r\n this.showLess(currentEvtObj);\r\n } else {\r\n this.showMore(currentEvtObj);\r\n }\r\n }\r\n\r\n showLess(element) {\r\n element.textContent = element.dataset.less;\r\n element.previousElementSibling.classList.remove(moreLessRef.clampClass);\r\n element.classList.add(moreLessRef.activeClass);\r\n element.closest(moreLessRef.closestParent).classList.remove(moreLessRef.parentAlignmentClass);\r\n }\r\n\r\n showMore(element) {\r\n element.textContent = element.dataset.more;\r\n element.previousElementSibling.classList.add(moreLessRef.clampClass);\r\n element.classList.remove(moreLessRef.activeClass);\r\n element.closest(moreLessRef.closestParent).classList.add(moreLessRef.parentAlignmentClass);\r\n }\r\n}\r\n\r\n\r\nexport default MoreLessToggle;","import {\r\n phoneHandlerRef\r\n} from \"../../utils/constant\";\r\n\r\nclass PhoneInputHandler {\r\n constructor() {\r\n this.init();\r\n }\r\n\r\n init() {\r\n if (document.querySelector(phoneHandlerRef.targetClass)) {\r\n window.addEventListener(\"load\", () => {\r\n const inputs = document.querySelectorAll(phoneHandlerRef.targetClass);\r\n inputs.forEach((input) => {\r\n input.addEventListener(\"countrychange\", function () {\r\n var inputElements = document.querySelectorAll('.phoneiti');\r\n inputElements?.forEach(function(inputElement) {\r\n var fieldName = inputElement.getAttribute('data-sc-field-name');\r\n var elements = inputElement.parentElement.querySelectorAll('.iti__selected-dial-code');\r\n elements?.forEach(function(element) {\r\n var inputVal = element.innerHTML;\r\n var countryCode = `countryCode${fieldName}`;\r\n var hiddenInput = document.querySelector(`[data-sc-field-name=\"${countryCode}\"]`);\r\n if (hiddenInput) {\r\n hiddenInput.value = inputVal;\r\n } \r\n });\r\n });\r\n });\r\n this.setupPhoneInput(input);\r\n \r\n });\r\n });\r\n }\r\n }\r\n \r\n phoneFilledValue(evt) {\r\n let hiddenPhoneField= evt.target.querySelector(phoneHandlerRef.hiddenElementTargetClass);\r\n var inputVal = $('.iti__selected-dial-code').text();\r\n hiddenPhoneField.val(inputVal);\r\n }\r\n\r\n setupPhoneInput(inputElement) {\r\n if (inputElement.classList.contains(\"onlyuae\")) {\r\n window.intlTelInput(inputElement, {\r\n hiddenInput: \"full_phone\",\r\n onlyCountries: [\"ae\"],\r\n initialCountry: \"auto\",\r\n separateDialCode: true,\r\n geoIpLookup: this.geoIpLookup.bind(this),\r\n utilsScript: \"https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/utils.js\",\r\n });\r\n }\r\n else{\r\n window.intlTelInput(inputElement, {\r\n hiddenInput: \"full_phone\",\r\n initialCountry: \"auto\",\r\n separateDialCode: true,\r\n geoIpLookup: this.geoIpLookup.bind(this),\r\n utilsScript: \"https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/utils.js\",\r\n });\r\n }\r\n \r\n }\r\n\r\n geoIpLookup(callback) {\r\n fetch(\"https://ipinfo.io/json\")\r\n .then((response) => response.json())\r\n .then((data) => {\r\n const countryCode = data.country ? data.country : \"us\";\r\n callback(countryCode);\r\n });\r\n }\r\n}\r\n\r\nexport default PhoneInputHandler","class PromotionCardManager {\r\n constructor(selector) {\r\n this.promotionCards = document.querySelectorAll(selector);\r\n this.init();\r\n }\r\n\r\n init() {\r\n if (this.promotionCards.length > 0) {\r\n this.promotionCards.forEach((item) => {\r\n item.addEventListener(\"mouseover\", (e) => this.setActivePromotion(item));\r\n item.addEventListener(\"mouseleave\", (e) => this.removeActivePromotion(item));\r\n });\r\n }\r\n }\r\n\r\n setActivePromotion(target) {\r\n target.classList.add(\"extend\");\r\n let filtered = [];\r\n this.promotionCards.forEach(item => {\r\n if(!(item.classList.contains('d-none'))) {\r\n filtered.push(item);\r\n }\r\n })\r\n filtered.forEach((item, i) => {\r\n if (item.classList.contains(\"extend\")) {\r\n if (i % 2 === 0) {\r\n filtered[i + 1].classList.add('squeeze');\r\n } else {\r\n filtered[i-1].classList.add('squeeze');\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n removeActivePromotion(target) {\r\n target.classList.remove(\"extend\");\r\n\r\n this.promotionCards.forEach((item) => {\r\n item.classList.remove('squeeze');\r\n });\r\n }\r\n}\r\n\r\nexport default PromotionCardManager","import { promotionFilterRef } from \"../../utils/constant\";\r\n\r\nclass PromotionFilter {\r\n constructor(action, month, year, search, reset) {\r\n this.data = {\r\n selectedAction: action,\r\n selectedMonth: month,\r\n selectedYear: year,\r\n selectedSearch: search,\r\n selectedReset: reset,\r\n };\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.action = document.getElementById(this.data.selectedAction);\r\n this.month = document.getElementById(this.data.selectedMonth);\r\n this.year = document.getElementById(this.data.selectedYear);\r\n this.search = document.getElementById(this.data.selectedSearch);\r\n this.reset = document.getElementById(this.data.selectedReset);\r\n // Add event listeners to the select elements, search input, and clear button\r\n if(window.innerWidth <= 768){\r\n this.action && this.action.addEventListener(\"click\", this.toggleFilter.bind(this));\r\n }\r\n this.month &&\r\n this.month.addEventListener(\"change\", this.filterPromotions.bind(this));\r\n this.year &&\r\n this.year.addEventListener(\"change\", this.filterPromotions.bind(this));\r\n this.search &&\r\n this.search.addEventListener(\"input\", this.filterPromotions.bind(this));\r\n this.search && this.search.addEventListener(\r\n \"keydown\",\r\n function (event) {\r\n if (event.keyCode === 13) {\r\n event.preventDefault();\r\n }\r\n }.bind(this)\r\n );\r\n this.reset &&\r\n this.reset.addEventListener(\"click\", this.resetFilters.bind(this));\r\n }\r\n\r\n filterPromotions() {\r\n let promotionCards = document.querySelectorAll(promotionFilterRef.targetCard);\r\n let searchVal = this.search.value;\r\n let month = +this.month.value;\r\n let year = +this.year.value;\r\n let nodata = true;\r\n promotionCards.forEach(function (card) {\r\n let cardDate = new Date(card.getAttribute(promotionFilterRef.dateAttr));\r\n let cardMonth = cardDate.getMonth() + 1;\r\n let cardYear = cardDate.getFullYear();\r\n let cardTitle = card\r\n .getAttribute(promotionFilterRef.titleAttr)\r\n .toLowerCase();\r\n\r\n card.classList.add(\"d-none\");\r\n if (\r\n cardTitle.includes(searchVal.toLowerCase())\r\n ) {\r\n if (\r\n (month === 0 || month === cardMonth) &&\r\n (year === 0 || year === cardYear)\r\n ) {\r\n card.classList.remove(\"d-none\");\r\n nodata = false;\r\n }\r\n }\r\n let nodataLayer = document.querySelector(promotionFilterRef.nodataWrap);\r\n if (nodata) {\r\n nodataLayer.style.display = \"block\";\r\n } else {\r\n nodataLayer.style.display = \"none\";\r\n }\r\n });\r\n }\r\n\r\n resetFilters() {\r\n this.month.value = 0;\r\n this.year.value = 0;\r\n this.search.value = \"\";\r\n\r\n // Trigger filter promotions function to reset the display\r\n this.filterPromotions();\r\n }\r\n\r\n toggleFilter() {\r\n const toggleWrapper = document.getElementsByClassName(\"custom-wrapper\");\r\n if (toggleWrapper[0].style.maxHeight === \"unset\")\r\n toggleWrapper[0].style.maxHeight = 0;\r\n else {\r\n toggleWrapper[0].style.maxHeight = \"unset\";\r\n }\r\n }\r\n}\r\n\r\nexport default PromotionFilter;\r\n","import { filterByCatRef } from \"../../utils/constant\";\r\n\r\nclass FilterCardsbyCat {\r\n constructor(handler, card, form, title) {\r\n this.handlers = document.querySelectorAll(handler);\r\n this.cards = document.querySelectorAll(card);\r\n this.formReset = document.getElementById(form);\r\n this.cardTitle = document.getElementById(title);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.handlers.forEach((item) =>\r\n item.addEventListener(\"pointerdown\", (e) => this.setFilterAction(item))\r\n );\r\n }\r\n\r\n setFilterAction(handler) {\r\n if (this.formReset) {\r\n this.formReset.reset();\r\n }\r\n const selectedCategory = handler.querySelector(`a[${filterByCatRef.attr}]`);\r\n let category = selectedCategory.dataset.ref;\r\n let catergoryName = selectedCategory.innerText;\r\n\r\n this.cardTitle.innerHTML = catergoryName;\r\n\r\n this.handlers.forEach((slide) =>\r\n slide.classList.remove(filterByCatRef.targetActive)\r\n );\r\n handler.classList.add(filterByCatRef.targetActive);\r\n let arrLength = [];\r\n if (category == filterByCatRef.allAlias) {\r\n this.cards.forEach((card) => {\r\n arrLength.push(card);\r\n card.classList.remove(filterByCatRef.hideClass);\r\n card.classList.remove(filterByCatRef.horLayoutClass);\r\n });\r\n } else {\r\n this.cards.forEach((item) => {\r\n item.classList.add(filterByCatRef.horLayoutClass);\r\n if (item.dataset.category === category) {\r\n arrLength.push(item);\r\n item.classList.remove(filterByCatRef.hideClass);\r\n } else {\r\n item.classList.add(filterByCatRef.hideClass);\r\n }\r\n });\r\n }\r\n let noData = document.querySelector(filterByCatRef.nodataWrap);\r\n if (arrLength.length < 1) {\r\n noData.style.display = \"block\";\r\n } else {\r\n noData.style.display = \"none\";\r\n }\r\n }\r\n}\r\n\r\nexport default FilterCardsbyCat;\r\n","import { filterByFormRef } from \"../../utils/constant\";\r\n\r\nclass FilterByForm {\r\n constructor(card, form, activeCat) {\r\n this.cards = document.querySelectorAll(card);\r\n this.mainForm = document.getElementById(form);\r\n this.activeCat = activeCat;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.mainForm &&\r\n this.mainForm.addEventListener(\"submit\", (e) => {\r\n e.preventDefault();\r\n this.handleFormSubmit();\r\n });\r\n }\r\n\r\n handleFormSubmit() {\r\n let activeCategory = document.querySelector(this.activeCat);\r\n let category = activeCategory\r\n .querySelector(\"a\")\r\n .getAttribute(filterByFormRef.attr);\r\n let filterCardsbyCategory = [];\r\n\r\n if (category == filterByFormRef.allAlias) {\r\n filterCardsbyCategory = this.cards;\r\n } else {\r\n this.cards.forEach((item) => {\r\n if (item.dataset.category == category) {\r\n filterCardsbyCategory.push(item);\r\n }\r\n });\r\n }\r\n\r\n const formData = new FormData(this.mainForm);\r\n\r\n let arrLength = [];\r\n let highToLow = false;\r\n let lowToHigh = false;\r\n let formEmpty = true;\r\n let checkBoxChecked=false;\r\n filterCardsbyCategory.forEach((item) => {\r\n let push = false;\r\n for (const pair of formData.entries()) {\r\n let formField = pair[0];\r\n let formVal = pair[1];\r\n if (\r\n formVal === filterByFormRef.switch &&\r\n formField != filterByFormRef.indexTarget\r\n ) {\r\n formEmpty = false;\r\n checkBoxChecked=true;\r\n let attr = item.getAttribute(`data-${formField}`);\r\n if (attr && attr == filterByFormRef.attrVal) {\r\n push = true;\r\n }\r\n }\r\n }\r\n if (push == true) {\r\n item.classList.remove(filterByFormRef.hideClass);\r\n arrLength.push(item);\r\n } else {\r\n if (formEmpty == false) {\r\n item.classList.add(filterByFormRef.hideClass);\r\n } else {\r\n item.classList.remove(filterByFormRef.hideClass);\r\n }\r\n }\r\n });\r\n\r\n // high to low fee filter\r\n\r\n let newArr = [];\r\n // let highToLow = false;\r\n // let lowToHigh = false;\r\n\r\n // filters applied\r\n\r\n filterCardsbyCategory.forEach((item) => {\r\n for (const pair of formData.entries()) {\r\n let formField = pair[0];\r\n let formVal = pair[1];\r\n let attr = item.getAttribute(`data-${formField}`);\r\n newArr.push(attr);\r\n if (formField == filterByFormRef.indexTarget && formVal == 1) {\r\n formEmpty = true;\r\n highToLow = true;\r\n } else if (formField == filterByFormRef.indexTarget && formVal == 0) {\r\n formEmpty = true;\r\n lowToHigh = true;\r\n }\r\n else{\r\n formEmpty = false;\r\n }\r\n }\r\n });\r\n\r\n let sortedArray = [];\r\n\r\n if (highToLow && arrLength.length > 0) {\r\n // formEmpty = false;\r\n sortedArray = arrLength.sort(function (a, b) {\r\n return b - a;\r\n });\r\n } else if (highToLow && !arrLength.length) {\r\n // formEmpty = false;\r\n\r\n sortedArray = newArr.sort(function (a, b) {\r\n return b - a;\r\n });\r\n } else if (lowToHigh && arrLength.length > 0) {\r\n // formEmpty = false;\r\n\r\n sortedArray = arrLength.sort(function (a, b) {\r\n return a - b;\r\n });\r\n } else if (lowToHigh && !arrLength.length > 0) {\r\n // formEmpty = false;\r\n sortedArray = newArr.sort(function (a, b) {\r\n return a - b;\r\n });\r\n }\r\n let cardArr = [];\r\n if(checkBoxChecked)\r\n {\r\n if(arrLength.length>0)\r\n {\r\n sortedArray.forEach((cards, i) => {\r\n filterCardsbyCategory.forEach((item) => {\r\n // formEmpty = false;\r\n let attr = item.getAttribute(\"data-cardOrder\");\r\n if (cards == attr) {\r\n cardArr.push(item);\r\n arrLength.push(item);\r\n item.style.order = i;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n else{\r\n sortedArray.forEach((cards, i) => {\r\n filterCardsbyCategory.forEach((item) => {\r\n // formEmpty = false;\r\n let attr = item.getAttribute(\"data-cardOrder\");\r\n if (cards == attr) {\r\n cardArr.push(item);\r\n arrLength.push(item);\r\n item.style.order = i;\r\n }\r\n });\r\n });\r\n }\r\n \r\n \r\n\r\n let noData = document.querySelector(filterByFormRef.nodataWrap);\r\n noData.style.display = \"none\";\r\n if (arrLength.length < 1) {\r\n if (formEmpty == true) {\r\n if (filterCardsbyCategory.length < 1) {\r\n noData.style.display = \"block\";\r\n } else {\r\n noData.style.display = \"block\";\r\n }\r\n } else {\r\n noData.style.display = \"block\";\r\n }\r\n } else {\r\n noData.style.display = \"none\";\r\n }\r\n\r\n const filterModal = document.getElementById(filterByFormRef.popup);\r\n const backdrop = document.getElementById(filterByFormRef.backdrop);\r\n\r\n filterModal && filterModal.classList.remove(filterByFormRef.popupClass);\r\n backdrop && backdrop.classList.remove(filterByFormRef.popupClass);\r\n document.querySelector(\"html\").classList.remove(filterByFormRef.htmlClass);\r\n }\r\n}\r\n\r\nexport default FilterByForm;\r\n","import {\r\n branchLocatorRef\r\n} from \"../../utils/constant\";\r\n\r\nclass BranchLocator {\r\n constructor(mapDivId) {\r\n this.mapData = window.mapData;\r\n this.ATMBranches;\r\n this.SourceLocation = {\r\n lat: 0,\r\n lng: 0\r\n };\r\n this.DestinationLocation = {\r\n lat: 0,\r\n lng: 0\r\n };\r\n this.filters = [];\r\n this.BRLocation = \"\";\r\n this.SelectedTime = \"\";\r\n this.ResultBranches;\r\n this.CenterCoordinates = window.defaultLatLong;\r\n this.defaultRegion = window.defaultRegion;\r\n this.ATMListByEmirates;\r\n this.tourStops = [];\r\n this.ErresMessage = window.errorMessage;\r\n this.markers = [];\r\n this.uniqueLocations = {};\r\n this.uniqueBranchesData = [];\r\n this.map;\r\n this.infoWindow;\r\n this.mapDivId = mapDivId;\r\n this.listContainer = document.getElementById(\r\n branchLocatorRef.listLocationsId\r\n );\r\n this.locationField = document.getElementById(\r\n branchLocatorRef.selectLocationId\r\n );\r\n this.timingField = document.getElementById(\r\n branchLocatorRef.selectTimingId\r\n );\r\n this.SelectedTime = this.timingField && this.timingField.value;\r\n this.init();\r\n }\r\n\r\n async init() {\r\n if (this.locationField) {\r\n this.attachEventListeners();\r\n }\r\n }\r\n\r\n initMap() {\r\n let mapElement = document.getElementById(this.mapDivId);\r\n if (mapElement) {\r\n this.map = new google.maps.Map(mapElement, {\r\n zoom: 8,\r\n center: this.CenterCoordinates,\r\n }\r\n );\r\n\r\n this.infoWindow = new google.maps.InfoWindow();\r\n this.filterEmiratesATM();\r\n }\r\n }\r\n\r\n createUpdateMarkers() {\r\n this.markers.forEach((marker) => {\r\n marker.setMap(null);\r\n });\r\n this.markers = [];\r\n this.tourStops.forEach(([position, title, data], i) => {\r\n let marker = new google.maps.Marker({\r\n position,\r\n map: this.map,\r\n title: title,\r\n content: data,\r\n optimized: false,\r\n markid: `marker${i}`,\r\n icon: branchLocatorRef.pinImg,\r\n });\r\n marker.addListener(\"click\", () => {\r\n this.infoWindow.close();\r\n this.infoWindow.setContent(data);\r\n this.infoWindow.open(marker.getMap(), marker);\r\n this.map.setCenter(marker.getPosition());\r\n this.map.setZoom(8);\r\n });\r\n this.map.setZoom(8);\r\n this.markers.push(marker);\r\n });\r\n this.map.setCenter(this.markers[0].getPosition());\r\n }\r\n\r\n showMarker(index) {\r\n const selectedMarker = this.markers[index];\r\n if (selectedMarker) {\r\n this.infoWindow.setContent(this.markers[index].content);\r\n this.infoWindow.open(this.map, this.markers[index]);\r\n this.map.setCenter(selectedMarker.getPosition());\r\n this.map.setZoom(12);\r\n }\r\n }\r\n\r\n populateSelectData() {\r\n this.ATMBranches.forEach((branch) => {\r\n const location = branch.Location;\r\n\r\n if (!this.uniqueLocations[location]) {\r\n this.uniqueLocations[location] = true;\r\n this.uniqueBranchesData.push(branch);\r\n }\r\n });\r\n for (let i = 0; i < this.uniqueBranchesData.length; i++) {\r\n this.locationField.innerHTML += ``;\r\n }\r\n }\r\n\r\n attachEventListeners() {\r\n document\r\n .getElementById(branchLocatorRef.searchInputId)\r\n .addEventListener(\"input\", this.onSearchFilter.bind(this));\r\n\r\n document\r\n .querySelectorAll(`input[name=\"${branchLocatorRef.checkBoxName}\"]`)\r\n .forEach((checkbox) => {\r\n checkbox.addEventListener(\r\n \"change\",\r\n this.handleFacilityChange.bind(this, checkbox)\r\n );\r\n });\r\n\r\n this.locationField.addEventListener(\r\n \"change\",\r\n this.handleLocationChange.bind(this)\r\n );\r\n \r\n this.timingField.addEventListener(\r\n \"change\",\r\n this.handleTimingChange.bind(this)\r\n );\r\n\r\n document.addEventListener(\r\n \"DOMContentLoaded\",\r\n this.domContentLoaded.bind(this)\r\n );\r\n }\r\n\r\n onSearchFilter(event) {\r\n let filter = event.target.value.toUpperCase();\r\n let li = this.listContainer.getElementsByTagName(\"li\");\r\n for (let i = 0; i < li.length; i++) {\r\n let a = li[i].getElementsByClassName(\"BRATMList_anchor\")[0];\r\n if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {\r\n li[i].style.display = \"\";\r\n } else {\r\n li[i].style.display = \"none\";\r\n }\r\n }\r\n }\r\n\r\n handleFacilityChange(checkbox, event) {\r\n if(event.target.checked)\r\n {\r\n let index = this.filters.indexOf(checkbox.value);\r\n if (index == -1) {\r\n this.filters.push(checkbox.value);\r\n }\r\n \r\n }\r\n else{\r\n let index = this.filters.indexOf(checkbox.value);\r\n if (index !== -1) {\r\n this.filters.splice(index, 1);\r\n }\r\n }\r\n \r\n this.displayFilteredData();\r\n }\r\n\r\n handleLocationChange(e) {\r\n let branchFacilities = document.querySelectorAll(\r\n `input[name=\"${branchLocatorRef.checkBoxName}\"]`\r\n );\r\n\r\n // branchFacilities.forEach((checkbox) => {\r\n // checkbox.checked = false;\r\n // this.filters[checkbox.value] = \"No\";\r\n // });\r\n\r\n this.BRLocation = this.locationField.value;\r\n this.SelectedTime = this.timingField && this.timingField.value;\r\n this.filterEmiratesATM();\r\n }\r\n\r\n handleTimingChange(e) {\r\n let branchFacilities = document.querySelectorAll(\r\n `input[name=\"${branchLocatorRef.checkBoxName}\"]`\r\n );\r\n\r\n // branchFacilities.forEach((checkbox) => {\r\n // checkbox.checked = false;\r\n // this.filters[checkbox.value] = \"No\";\r\n // });\r\n\r\n this.SelectedTime = this.timingField && this.timingField.value;\r\n this.filterEmiratesATM();\r\n }\r\n domContentLoaded() {\r\n this.setLanguageBasedErrorMessage();\r\n this.populateSelectData();\r\n if (this.locationField) {\r\n this.locationField.value = this.defaultRegion;\r\n this.BRLocation = this.locationField.value;\r\n }\r\n\r\n this.ATMListByEmirates = this.ATMBranches;\r\n this.initMap();\r\n this.getLocation();\r\n }\r\n\r\n setLanguageBasedErrorMessage() {\r\n this.ErresMessage = window.errorMessage;\r\n this.ATMBranches = this.mapData;\r\n }\r\n\r\n async getLocation() {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n this.showPosition.bind(this),\r\n this.geoLocationError.bind(this)\r\n );\r\n } else {\r\n console.log(branchLocatorRef.geoLocationMessage);\r\n }\r\n }\r\n\r\n async geoCodeCoordinates(coordinates) {\r\n let geocodeUrl = document.getElementById(this.mapDivId).getAttribute('data-geocodeUrl');\r\n let geocodeApiUrl = `${geocodeUrl}?lat=${coordinates.lat}&long=${coordinates.lng}`;\r\n try {\r\n let response = await fetch(geocodeApiUrl);\r\n let jsonResp = await response.json();\r\n \r\n if (jsonResp?.status == \"OK\" && jsonResp?.results?.length > 0) {\r\n let locationData = jsonResp.results;\r\n let locality = null;\r\n locationData.forEach((locationChunk) => {\r\n locationChunk.address_components.forEach((locationSubChunk) => {\r\n if (\r\n locationSubChunk.types.includes(\"locality\") &&\r\n locationSubChunk.types.includes(\"political\")\r\n ) {\r\n locality = locationSubChunk.short_name;\r\n this.BRLocation = this.defaultRegion;\r\n this.uniqueBranchesData.forEach((uniqueBranch) => {\r\n if (uniqueBranch.Location == locality) {\r\n this.BRLocation = uniqueBranch.Location;\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n this.filterEmiratesATM();\r\n return locality;\r\n } else {\r\n return null;\r\n }\r\n } catch (error) {\r\n console.error(\"geoCodeCoordinates--Error Message : \" + error.message);\r\n return null;\r\n }\r\n }\r\n\r\n geoLocationError(error) {\r\n console.error(\"Geolocation error: \" + error.message);\r\n }\r\n\r\n async showPosition(position) {\r\n this.SourceLocation = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n };\r\n let currentRegion = await this.geoCodeCoordinates(this.SourceLocation);\r\n if (currentRegion !== undefined && currentRegion != null) {\r\n if (this.locationField) {\r\n let allowedRegions = [];\r\n for (let i = 0; i < this.locationField.options.length; i++) {\r\n allowedRegions.push(this.locationField.options[i].value);\r\n }\r\n if (allowedRegions.includes(currentRegion)) {\r\n this.locationField.value = currentRegion;\r\n } else {\r\n this.locationField.value = this.defaultRegion;\r\n }\r\n }\r\n }\r\n }\r\n\r\n filterEmiratesATM() {\r\n this.ATMListByEmirates = this.ATMBranches.filter(\r\n (value) => ((value.Location == this.BRLocation) && (value.Timing.indexOf(this.SelectedTime)!==-1))\r\n );\r\n \r\n this.displayFilteredData();\r\n }\r\n\r\n\r\n displayFilteredData() {\r\n this.listContainer.innerHTML = \"\";\r\n this.tourStops = [];\r\n\r\n let branchFacilities = document.querySelectorAll(\r\n `input[name=\"${branchLocatorRef.checkBoxName}\"]`\r\n );\r\n let resultBranch = [];\r\n let notAllSelected = false;\r\n Object.values(this.filters).forEach((val) => {\r\n if (val === \"True\") {\r\n notAllSelected = true;\r\n }\r\n });\r\n if(this.filters.length>0)\r\n {\r\n notAllSelected = true;\r\n }\r\n\r\n if (notAllSelected) {\r\n resultBranch = this.ATMListByEmirates.filter((value, key) => {\r\n if (\r\n this.checkFacilities(value,this.filters)\r\n ) {\r\n return value;\r\n }\r\n });\r\n } else {\r\n resultBranch = this.ATMListByEmirates;\r\n }\r\n this.createFilterData(resultBranch);\r\n this.createUpdateMarkers();\r\n }\r\n\r\n createList(index, title, locationIcon) {\r\n const listItem = document.createElement(\"li\");\r\n listItem.className = \"BRATMList\";\r\n const anchor = document.createElement(\"div\");\r\n anchor.className = \"BRATMList_anchor\";\r\n anchor.addEventListener(\"click\", (e) => {\r\n this.showMarker(index);\r\n let anchors = this.listContainer.querySelectorAll(\".BRATMList_anchor\");\r\n anchors.forEach((item) => {\r\n item.classList.remove(\"active\");\r\n });\r\n anchor.classList.add(\"active\");\r\n });\r\n const leftDiv = document.createElement(\"div\");\r\n leftDiv.className = \"left-side\";\r\n const rightDiv = document.createElement(\"div\");\r\n rightDiv.className = \"icon-right\";\r\n const icon = document.createElement(\"img\");\r\n icon.src = \"/assets/svg/right-arrow.svg\";\r\n icon.alt = \"\";\r\n rightDiv.appendChild(icon);\r\n\r\n const titleIcon = document.createElement(\"div\");\r\n titleIcon.className = \"icon\";\r\n const iconTitleImg = document.createElement(\"img\");\r\n iconTitleImg.src = locationIcon ? locationIcon : \"/assets/svg/bank-icon.svg\";\r\n iconTitleImg.alt = \"Bank\";\r\n titleIcon.appendChild(iconTitleImg);\r\n const titleName = document.createElement(\"div\");\r\n titleName.className = \"contentWrapper\";\r\n const titlehead = document.createElement(\"h5\");\r\n titlehead.className = \"h5\";\r\n titlehead.textContent = title;\r\n titleName.appendChild(titlehead);\r\n\r\n leftDiv.appendChild(titleIcon);\r\n leftDiv.appendChild(titleName);\r\n\r\n anchor.appendChild(leftDiv);\r\n anchor.appendChild(rightDiv);\r\n\r\n listItem.appendChild(anchor);\r\n\r\n this.listContainer.appendChild(listItem);\r\n return listItem;\r\n }\r\n\r\n createFilterData(dataArray) {\r\n dataArray.forEach((item, i) => {\r\n this.tourStops.push([{\r\n lat: parseFloat(item.Lattitude),\r\n lng: parseFloat(item.Longitude),\r\n },\r\n item.DisplayTitle,\r\n `
${\r\n item.DisplayTitle\r\n }
${\r\n item.PhoneNumber\r\n }
${\r\n item.Timings\r\n }
${\r\n item.Notes\r\n }