{"version":3,"file":"static/js/main.5101e89a.js","mappings":";wEAEIA,EAAkB,o9HAElBC,GAA6BC,EAAAA,EAAAA,IAAQ,SAAUC,GACjD,OAAOH,EAAgBI,KAAKD,IAAgC,MAAvBA,EAAKE,WAAW,IAE3B,MAAvBF,EAAKE,WAAW,IAEhBF,EAAKE,WAAW,GAAK,EAC1B,iCCVA,SAASH,EAAQI,GACf,IAAIC,EAAQC,OAAOC,OAAO,MAC1B,OAAO,SAAUC,GAEf,YADmBC,IAAfJ,EAAMG,KAAoBH,EAAMG,GAAOJ,EAAGI,IACvCH,EAAMG,EACf,CACF,gCCNA,OAOC,WACA,aAEA,IAAIE,EAAS,CAAC,EAAEC,eAGhB,SAASC,IAGR,IAFA,IAAIC,EAAU,GAELC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAC1C,IAAIN,EAAMO,UAAUD,GACpB,GAAKN,EAAL,CAEA,IAAIS,SAAiBT,EAErB,GAAgB,WAAZS,GAAoC,WAAZA,EAC3BJ,EAAQK,KAAKV,QACP,GAAIW,MAAMC,QAAQZ,IACxB,GAAIA,EAAIQ,OAAQ,CACf,IAAIK,EAAQT,EAAWU,MAAM,KAAMd,GAC/Ba,GACHR,EAAQK,KAAKG,EAEf,OACM,GAAgB,WAAZJ,EAAsB,CAChC,GAAIT,EAAIe,WAAajB,OAAOkB,UAAUD,WAAaf,EAAIe,SAASA,WAAWE,SAAS,iBAAkB,CACrGZ,EAAQK,KAAKV,EAAIe,YACjB,QACD,CAEA,IAAK,IAAIG,KAAOlB,EACXE,EAAOiB,KAAKnB,EAAKkB,IAAQlB,EAAIkB,IAChCb,EAAQK,KAAKQ,EAGhB,CAxBkB,CAyBnB,CAEA,OAAOb,EAAQe,KAAK,IACrB,CAEqCC,EAAOC,SAC3ClB,EAAWmB,QAAUnB,EACrBiB,EAAOC,QAAUlB,QAKhB,KAFwB,EAAF,WACtB,OAAOA,CACP,UAFoB,OAEpB,YAIF,CApDA,iDCPD,IAAIoB,EAAuB,CACzBC,iBAAkB,CAChBC,IAAK,qBACLC,MAAO,+BAETC,SAAU,CACRF,IAAK,WACLC,MAAO,qBAETE,YAAa,gBACbC,iBAAkB,CAChBJ,IAAK,qBACLC,MAAO,+BAETI,SAAU,CACRL,IAAK,WACLC,MAAO,qBAETK,YAAa,CACXN,IAAK,eACLC,MAAO,yBAETM,OAAQ,CACNP,IAAK,SACLC,MAAO,mBAETO,MAAO,CACLR,IAAK,QACLC,MAAO,kBAETQ,YAAa,CACXT,IAAK,eACLC,MAAO,yBAETS,OAAQ,CACNV,IAAK,SACLC,MAAO,mBAETU,aAAc,CACZX,IAAK,gBACLC,MAAO,0BAETW,QAAS,CACPZ,IAAK,UACLC,MAAO,oBAETY,YAAa,CACXb,IAAK,eACLC,MAAO,yBAETa,OAAQ,CACNd,IAAK,SACLC,MAAO,mBAETc,WAAY,CACVf,IAAK,cACLC,MAAO,wBAETe,aAAc,CACZhB,IAAK,gBACLC,MAAO,2BAsBX,QAnBqB,SAAwBgB,EAAOC,EAAOC,GACzD,IAAIC,EACAC,EAAavB,EAAqBmB,GAQtC,OANEG,EADwB,kBAAfC,EACAA,EACU,IAAVH,EACAG,EAAWrB,IAEXqB,EAAWpB,MAAMqB,QAAQ,YAAaJ,EAAM7B,YAEvC,OAAZ8B,QAAgC,IAAZA,GAAsBA,EAAQI,UAChDJ,EAAQK,YAAcL,EAAQK,WAAa,EACtC,MAAQJ,EAERA,EAAS,OAGbA,CACT,ECjFe,SAASK,EAAkBC,GACxC,OAAO,WACL,IAAIP,EAAUtC,UAAUC,OAAS,QAAsBP,IAAjBM,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/E8C,EAAQR,EAAQQ,MAAQC,OAAOT,EAAQQ,OAASD,EAAKG,aAEzD,OADaH,EAAKI,QAAQH,IAAUD,EAAKI,QAAQJ,EAAKG,aAExD,CACF,CCPA,IAkBIE,EAAa,CACfC,KAAMP,EAAkB,CACtBK,QApBc,CAChBG,KAAM,mBACNC,KAAM,aACNC,OAAQ,WACRC,MAAO,cAiBLP,aAAc,SAEhBQ,KAAMZ,EAAkB,CACtBK,QAlBc,CAChBG,KAAM,iBACNC,KAAM,cACNC,OAAQ,YACRC,MAAO,UAeLP,aAAc,SAEhBS,SAAUb,EAAkB,CAC1BK,QAhBkB,CACpBG,KAAM,yBACNC,KAAM,yBACNC,OAAQ,qBACRC,MAAO,sBAaLP,aAAc,UC9BlB,IAAIU,EAAuB,CACzBC,SAAU,qBACVC,UAAW,mBACXC,MAAO,eACPC,SAAU,kBACVC,SAAU,cACV3C,MAAO,KCNM,SAAS4C,EAAgBnB,GACtC,OAAO,SAAUoB,EAAY3B,GAC3B,IACI4B,EACJ,GAAgB,gBAFU,OAAZ5B,QAAgC,IAAZA,GAAsBA,EAAQ6B,QAAUpB,OAAOT,EAAQ6B,SAAW,eAEpEtB,EAAKuB,iBAAkB,CACrD,IAAIpB,EAAeH,EAAKwB,wBAA0BxB,EAAKG,aACnDF,EAAoB,OAAZR,QAAgC,IAAZA,GAAsBA,EAAQQ,MAAQC,OAAOT,EAAQQ,OAASE,EAC9FkB,EAAcrB,EAAKuB,iBAAiBtB,IAAUD,EAAKuB,iBAAiBpB,EACtE,KAAO,CACL,IAAIsB,EAAgBzB,EAAKG,aACrBuB,EAAqB,OAAZjC,QAAgC,IAAZA,GAAsBA,EAAQQ,MAAQC,OAAOT,EAAQQ,OAASD,EAAKG,aACpGkB,EAAcrB,EAAK2B,OAAOD,IAAW1B,EAAK2B,OAAOF,EACnD,CAGA,OAAOJ,EAFKrB,EAAK4B,iBAAmB5B,EAAK4B,iBAAiBR,GAAcA,EAG1E,CACF,CCjBe,SAASS,EAAa7B,GACnC,OAAO,SAAU8B,GACf,IAAIrC,EAAUtC,UAAUC,OAAS,QAAsBP,IAAjBM,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E8C,EAAQR,EAAQQ,MAChB8B,EAAe9B,GAASD,EAAKgC,cAAc/B,IAAUD,EAAKgC,cAAchC,EAAKiC,mBAC7EC,EAAcJ,EAAOK,MAAMJ,GAC/B,IAAKG,EACH,OAAO,KAET,IAOIE,EAPAC,EAAgBH,EAAY,GAC5BI,EAAgBrC,GAASD,EAAKsC,cAAcrC,IAAUD,EAAKsC,cAActC,EAAKuC,mBAC9EzE,EAAMP,MAAMC,QAAQ8E,GAuB5B,SAAmBE,EAAOC,GACxB,IAAK,IAAI3E,EAAM,EAAGA,EAAM0E,EAAMpF,OAAQU,IACpC,GAAI2E,EAAUD,EAAM1E,IAClB,OAAOA,EAGX,MACF,CA9B6C4E,CAAUJ,GAAe,SAAUK,GAC1E,OAAOA,EAAQrG,KAAK+F,EACtB,IAaJ,SAAiBO,EAAQH,GACvB,IAAK,IAAI3E,KAAO8E,EACd,GAAIA,EAAO7F,eAAee,IAAQ2E,EAAUG,EAAO9E,IACjD,OAAOA,EAGX,MACF,CApBS+E,CAAQP,GAAe,SAAUK,GACpC,OAAOA,EAAQrG,KAAK+F,EACtB,IAKA,OAHAD,EAAQpC,EAAK8C,cAAgB9C,EAAK8C,cAAchF,GAAOA,EAGhD,CACLsE,MAHFA,EAAQ3C,EAAQqD,cAAgBrD,EAAQqD,cAAcV,GAASA,EAI7DW,KAHSjB,EAAOkB,MAAMX,EAAcjF,QAKxC,CACF,CCvBA,ICF4C4C,EC0B5C,MCzBA,EDaa,CACXiD,KAAM,QACNC,eAAgBA,EAChB7C,WNgBF,EMfE8C,eLVmB,SAAwB5D,EAAO6D,EAAOC,EAAWC,GACpE,OAAOzC,EAAqBtB,EAC9B,EKSEgE,SE+Fa,CACbC,cAxBkB,SAAuBC,EAAaH,GACtD,IAAII,EAASC,OAAOF,GAShBG,EAASF,EAAS,IACtB,GAAIE,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,IACf,KAAK,EACH,OAAOF,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAGtB,OAAOA,EAAS,IAClB,EAGEG,IAAK1C,EAAgB,CACnBQ,OApHY,CACdmC,OAAQ,CAAC,IAAK,KACdC,YAAa,CAAC,KAAM,MACpBC,KAAM,CAAC,gBAAiB,gBAkHtB7D,aAAc,SAEhB8D,QAAS9C,EAAgB,CACvBQ,OAnHgB,CAClBmC,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxBC,YAAa,CAAC,KAAM,KAAM,KAAM,MAChCC,KAAM,CAAC,cAAe,cAAe,cAAe,gBAiHlD7D,aAAc,OACdyB,iBAAkB,SAA0BqC,GAC1C,OAAOA,EAAU,CACnB,IAEFC,MAAO/C,EAAgB,CACrBQ,OAhHc,CAChBmC,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChEC,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,KAAM,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aA8GnH7D,aAAc,SAEhBgE,IAAKhD,EAAgB,CACnBQ,OA/GY,CACdmC,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvCpD,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5CqD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACxDC,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aA4GvE7D,aAAc,SAEhBiE,UAAWjD,EAAgB,CACzBQ,OA7GkB,CACpBmC,OAAQ,CACNO,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETb,YAAa,CACXM,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETZ,KAAM,CACJK,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,UAiFPzE,aAAc,OACdoB,iBA/E4B,CAC9BuC,OAAQ,CACNO,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETb,YAAa,CACXM,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETZ,KAAM,CACJK,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,aAmDPpD,uBAAwB,UFvH1BW,MFmCU,CACVqB,eCxD0CxD,EDwDP,CACjC+B,aAvD4B,wBAwD5B8C,aAvD4B,OAwD5B/B,cAAe,SAAuBV,GACpC,OAAO0C,SAAS1C,EAAO,GACzB,GC5DK,SAAUN,GACf,IAAIrC,EAAUtC,UAAUC,OAAS,QAAsBP,IAAjBM,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E+E,EAAcJ,EAAOK,MAAMnC,EAAK+B,cACpC,IAAKG,EAAa,OAAO,KACzB,IAAIG,EAAgBH,EAAY,GAC5B6C,EAAcjD,EAAOK,MAAMnC,EAAK6E,cACpC,IAAKE,EAAa,OAAO,KACzB,IAAI3C,EAAQpC,EAAK8C,cAAgB9C,EAAK8C,cAAciC,EAAY,IAAMA,EAAY,GAGlF,MAAO,CACL3C,MAHFA,EAAQ3C,EAAQqD,cAAgBrD,EAAQqD,cAAcV,GAASA,EAI7DW,KAHSjB,EAAOkB,MAAMX,EAAcjF,QAKxC,GDgDAyG,IAAKhC,EAAa,CAChBG,cA5DmB,CACrB8B,OAAQ,UACRC,YAAa,6DACbC,KAAM,8DA0DJ/B,kBAAmB,OACnBK,cAzDmB,CACrB0C,IAAK,CAAC,MAAO,YAyDXzC,kBAAmB,QAErB0B,QAASpC,EAAa,CACpBG,cA1DuB,CACzB8B,OAAQ,WACRC,YAAa,YACbC,KAAM,kCAwDJ/B,kBAAmB,OACnBK,cAvDuB,CACzB0C,IAAK,CAAC,KAAM,KAAM,KAAM,OAuDtBzC,kBAAmB,MACnBO,cAAe,SAAuBmC,GACpC,OAAOA,EAAQ,CACjB,IAEFf,MAAOrC,EAAa,CAClBG,cA3DqB,CACvB8B,OAAQ,eACRC,YAAa,sDACbC,KAAM,6FAyDJ/B,kBAAmB,OACnBK,cAxDqB,CACvBwB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtFkB,IAAK,CAAC,OAAQ,MAAO,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,MAAO,MAAO,MAAO,QAuD5FzC,kBAAmB,QAErB4B,IAAKtC,EAAa,CAChBG,cAxDmB,CACrB8B,OAAQ,YACRpD,MAAO,2BACPqD,YAAa,kCACbC,KAAM,gEAqDJ/B,kBAAmB,OACnBK,cApDmB,CACrBwB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACnDkB,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,SAmDjDzC,kBAAmB,QAErB6B,UAAWvC,EAAa,CACtBG,cApDyB,CAC3B8B,OAAQ,6DACRkB,IAAK,kFAmDH/C,kBAAmB,MACnBK,cAlDyB,CAC3B0C,IAAK,CACHX,GAAI,MACJC,GAAI,MACJC,SAAU,OACVC,KAAM,OACNC,QAAS,WACTC,UAAW,aACXC,QAAS,WACTC,MAAO,WA0CPrC,kBAAmB,SEzErB9C,QAAS,CACPyF,aAAc,EACdC,sBAAuB,kDGvB3B,IAAIC,EAAiB,CAAC,EACf,SAASC,IACd,OAAOD,CACT,gDCHA,IAAIE,EAAoB,SAA2B3C,EAAStC,GAC1D,OAAQsC,GACN,IAAK,IACH,OAAOtC,EAAWC,KAAK,CACrBL,MAAO,UAEX,IAAK,KACH,OAAOI,EAAWC,KAAK,CACrBL,MAAO,WAEX,IAAK,MACH,OAAOI,EAAWC,KAAK,CACrBL,MAAO,SAGX,QACE,OAAOI,EAAWC,KAAK,CACrBL,MAAO,SAGf,EACIsF,EAAoB,SAA2B5C,EAAStC,GAC1D,OAAQsC,GACN,IAAK,IACH,OAAOtC,EAAWM,KAAK,CACrBV,MAAO,UAEX,IAAK,KACH,OAAOI,EAAWM,KAAK,CACrBV,MAAO,WAEX,IAAK,MACH,OAAOI,EAAWM,KAAK,CACrBV,MAAO,SAGX,QACE,OAAOI,EAAWM,KAAK,CACrBV,MAAO,SAGf,EAsCA,QAJqB,CACnBuF,EAAGD,EACHE,EAnC0B,SAA+B9C,EAAStC,GAClE,IAMIqF,EANAxD,EAAcS,EAAQR,MAAM,cAAgB,GAC5CwD,EAAczD,EAAY,GAC1B0D,EAAc1D,EAAY,GAC9B,IAAK0D,EACH,OAAON,EAAkB3C,EAAStC,GAGpC,OAAQsF,GACN,IAAK,IACHD,EAAiBrF,EAAWO,SAAS,CACnCX,MAAO,UAET,MACF,IAAK,KACHyF,EAAiBrF,EAAWO,SAAS,CACnCX,MAAO,WAET,MACF,IAAK,MACHyF,EAAiBrF,EAAWO,SAAS,CACnCX,MAAO,SAET,MAEF,QACEyF,EAAiBrF,EAAWO,SAAS,CACnCX,MAAO,SAIb,OAAOyF,EAAe9F,QAAQ,WAAY0F,EAAkBK,EAAatF,IAAaT,QAAQ,WAAY2F,EAAkBK,EAAavF,GAC3I,gCC/De,SAASwF,EAAgCvF,GACtD,IAAIwF,EAAU,IAAIC,KAAKA,KAAKC,IAAI1F,EAAK2F,cAAe3F,EAAK4F,WAAY5F,EAAK6F,UAAW7F,EAAK8F,WAAY9F,EAAK+F,aAAc/F,EAAKgG,aAAchG,EAAKiG,oBAEjJ,OADAT,EAAQU,eAAelG,EAAK2F,eACrB3F,EAAKmG,UAAYX,EAAQW,SAClC,kGCZe,SAASC,EAAkBC,IACxCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdG,EAAOxG,EAAKyG,iBACZC,EAA4B,IAAIjB,KAAK,GACzCiB,EAA0BR,eAAeM,EAAO,EAAG,EAAG,GACtDE,EAA0BC,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAIC,GAAkBC,EAAAA,EAAAA,GAAkBH,GACpCI,EAA4B,IAAIrB,KAAK,GACzCqB,EAA0BZ,eAAeM,EAAM,EAAG,GAClDM,EAA0BH,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAII,GAAkBF,EAAAA,EAAAA,GAAkBC,GACxC,OAAI9G,EAAKmG,WAAaS,EAAgBT,UAC7BK,EAAO,EACLxG,EAAKmG,WAAaY,EAAgBZ,UACpCK,EAEAA,EAAO,CAElB,4FClBA,IAAIQ,EAAuB,OACZ,SAASC,EAAcZ,IACpCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACda,GAAOL,EAAAA,EAAAA,GAAkB7G,GAAMmG,UCLtB,SAA+BE,IAC5CC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAI2J,GAAOJ,EAAAA,EAAAA,GAAkBC,GACzBc,EAAkB,IAAI1B,KAAK,GAI/B,OAHA0B,EAAgBjB,eAAeM,EAAM,EAAG,GACxCW,EAAgBR,YAAY,EAAG,EAAG,EAAG,IAC1BE,EAAAA,EAAAA,GAAkBM,EAE/B,CDHiDC,CAAsBpH,GAAMmG,UAK3E,OAAOkB,KAAKC,MAAMJ,EAAOF,GAAwB,CACnD,sGETe,SAASO,EAAelB,EAAWlH,GAChD,IAAIqI,EAAMC,EAAOC,EAAOC,EAAuBC,EAAiBC,EAAuBC,EAAuBC,GAC9GzB,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdG,EAAOxG,EAAKyG,iBACZ3B,GAAiBC,EAAAA,EAAAA,KACjBF,GAAwBmD,EAAAA,EAAAA,GAAm3B,QAAx2BR,EAAyjB,QAAjjBC,EAAoe,QAA3dC,EAAsH,QAA7GC,EAAoC,OAAZxI,QAAgC,IAAZA,OAAqB,EAASA,EAAQ0F,6BAA6D,IAA1B8C,EAAmCA,EAAoC,OAAZxI,QAAgC,IAAZA,GAAqE,QAAtCyI,EAAkBzI,EAAQ8I,cAAwC,IAApBL,GAA4F,QAArDC,EAAwBD,EAAgBzI,eAA+C,IAA1B0I,OAA5J,EAAwMA,EAAsBhD,6BAA6C,IAAV6C,EAAmBA,EAAQ5C,EAAeD,6BAA6C,IAAV4C,EAAmBA,EAA4D,QAAnDK,EAAwBhD,EAAemD,cAA8C,IAA1BH,GAAyG,QAA5DC,EAAyBD,EAAsB3I,eAAgD,IAA3B4I,OAA9E,EAA2HA,EAAuBlD,6BAA4C,IAAT2C,EAAkBA,EAAO,GAGh7B,KAAM3C,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIqD,WAAW,6DAEvB,IAAIC,EAAsB,IAAI1C,KAAK,GACnC0C,EAAoBjC,eAAeM,EAAO,EAAG,EAAG3B,GAChDsD,EAAoBxB,YAAY,EAAG,EAAG,EAAG,GACzC,IAAIC,GAAkBwB,EAAAA,EAAAA,GAAeD,EAAqBhJ,GACtDkJ,EAAsB,IAAI5C,KAAK,GACnC4C,EAAoBnC,eAAeM,EAAM,EAAG3B,GAC5CwD,EAAoB1B,YAAY,EAAG,EAAG,EAAG,GACzC,IAAII,GAAkBqB,EAAAA,EAAAA,GAAeC,EAAqBlJ,GAC1D,OAAIa,EAAKmG,WAAaS,EAAgBT,UAC7BK,EAAO,EACLxG,EAAKmG,WAAaY,EAAgBZ,UACpCK,EAEAA,EAAO,CAElB,gHC5BA,IAAIQ,EAAuB,OACZ,SAASsB,EAAWjC,EAAWlH,IAC5CmH,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACda,GAAOkB,EAAAA,EAAAA,GAAepI,EAAMb,GAASgH,UCH5B,SAA4BE,EAAWlH,GACpD,IAAIqI,EAAMC,EAAOC,EAAOC,EAAuBC,EAAiBC,EAAuBC,EAAuBC,GAC9GzB,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiI,GAAiBC,EAAAA,EAAAA,KACjBF,GAAwBmD,EAAAA,EAAAA,GAAm3B,QAAx2BR,EAAyjB,QAAjjBC,EAAoe,QAA3dC,EAAsH,QAA7GC,EAAoC,OAAZxI,QAAgC,IAAZA,OAAqB,EAASA,EAAQ0F,6BAA6D,IAA1B8C,EAAmCA,EAAoC,OAAZxI,QAAgC,IAAZA,GAAqE,QAAtCyI,EAAkBzI,EAAQ8I,cAAwC,IAApBL,GAA4F,QAArDC,EAAwBD,EAAgBzI,eAA+C,IAA1B0I,OAA5J,EAAwMA,EAAsBhD,6BAA6C,IAAV6C,EAAmBA,EAAQ5C,EAAeD,6BAA6C,IAAV4C,EAAmBA,EAA4D,QAAnDK,EAAwBhD,EAAemD,cAA8C,IAA1BH,GAAyG,QAA5DC,EAAyBD,EAAsB3I,eAAgD,IAA3B4I,OAA9E,EAA2HA,EAAuBlD,6BAA4C,IAAT2C,EAAkBA,EAAO,GAC56BhB,GAAOe,EAAAA,EAAAA,GAAelB,EAAWlH,GACjCoJ,EAAY,IAAI9C,KAAK,GAIzB,OAHA8C,EAAUrC,eAAeM,EAAM,EAAG3B,GAClC0D,EAAU5B,YAAY,EAAG,EAAG,EAAG,IACpByB,EAAAA,EAAAA,GAAeG,EAAWpJ,EAEvC,CDRuDqJ,CAAmBxI,EAAMb,GAASgH,UAKvF,OAAOkB,KAAKC,MAAMJ,EAAOF,GAAwB,CACnD,mEEdA,IAAIyB,EAA2B,CAAC,IAAK,MACjCC,EAA0B,CAAC,KAAM,QAC9B,SAASC,EAA0B1J,GACxC,OAAoD,IAA7CwJ,EAAyBG,QAAQ3J,EAC1C,CACO,SAAS4J,EAAyB5J,GACvC,OAAmD,IAA5CyJ,EAAwBE,QAAQ3J,EACzC,CACO,SAAS6J,EAAoB7J,EAAO8J,EAAQC,GACjD,GAAc,SAAV/J,EACF,MAAM,IAAIiJ,WAAW,qCAAqCe,OAAOF,EAAQ,0CAA0CE,OAAOD,EAAO,mFAC5H,GAAc,OAAV/J,EACT,MAAM,IAAIiJ,WAAW,iCAAiCe,OAAOF,EAAQ,0CAA0CE,OAAOD,EAAO,mFACxH,GAAc,MAAV/J,EACT,MAAM,IAAIiJ,WAAW,+BAA+Be,OAAOF,EAAQ,sDAAsDE,OAAOD,EAAO,mFAClI,GAAc,OAAV/J,EACT,MAAM,IAAIiJ,WAAW,iCAAiCe,OAAOF,EAAQ,sDAAsDE,OAAOD,EAAO,kFAE7I,+BClBe,SAAS1C,EAAa4C,EAAUxJ,GAC7C,GAAIA,EAAK5C,OAASoM,EAChB,MAAM,IAAIC,UAAUD,EAAW,aAAeA,EAAW,EAAI,IAAM,IAAM,uBAAyBxJ,EAAK5C,OAAS,WAEpH,wFCFe,SAAS+J,EAAkBR,IACxCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IACImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdxC,EAAM7D,EAAKoJ,YACXlC,GAAQrD,EAHO,EAGc,EAAI,GAAKA,EAHvB,EAMnB,OAFA7D,EAAKqJ,WAAWrJ,EAAKsJ,aAAepC,GACpClH,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,4FCPe,SAASoI,EAAe/B,EAAWlH,GAChD,IAAIqI,EAAMC,EAAOC,EAAO6B,EAAuB3B,EAAiBC,EAAuBC,EAAuBC,GAC9GzB,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiI,GAAiBC,EAAAA,EAAAA,KACjBH,GAAeoD,EAAAA,EAAAA,GAA+0B,QAAp0BR,EAA8hB,QAAthBC,EAAkd,QAAzcC,EAA6G,QAApG6B,EAAoC,OAAZpK,QAAgC,IAAZA,OAAqB,EAASA,EAAQyF,oBAAoD,IAA1B2E,EAAmCA,EAAoC,OAAZpK,QAAgC,IAAZA,GAAqE,QAAtCyI,EAAkBzI,EAAQ8I,cAAwC,IAApBL,GAA4F,QAArDC,EAAwBD,EAAgBzI,eAA+C,IAA1B0I,OAA5J,EAAwMA,EAAsBjD,oBAAoC,IAAV8C,EAAmBA,EAAQ5C,EAAeF,oBAAoC,IAAV6C,EAAmBA,EAA4D,QAAnDK,EAAwBhD,EAAemD,cAA8C,IAA1BH,GAAyG,QAA5DC,EAAyBD,EAAsB3I,eAAgD,IAA3B4I,OAA9E,EAA2HA,EAAuBnD,oBAAmC,IAAT4C,EAAkBA,EAAO,GAGn4B,KAAM5C,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIsD,WAAW,oDAEvB,IAAIlI,GAAOuG,EAAAA,EAAAA,SAAOF,GACdxC,EAAM7D,EAAKoJ,YACXlC,GAAQrD,EAAMe,EAAe,EAAI,GAAKf,EAAMe,EAGhD,OAFA5E,EAAKqJ,WAAWrJ,EAAKsJ,aAAepC,GACpClH,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,+BCpBe,SAASgI,EAAU7E,GAChC,GAAoB,OAAhBA,IAAwC,IAAhBA,IAAwC,IAAhBA,EAClD,OAAOqG,IAET,IAAIpG,EAASC,OAAOF,GACpB,OAAIsG,MAAMrG,GACDA,EAEFA,EAAS,EAAIiE,KAAKqC,KAAKtG,GAAUiE,KAAKsC,MAAMvG,EACrD,+GCYe,SAASwG,EAAQvD,EAAWwD,IACzCvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdyD,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAIJ,MAAMK,GACD,IAAIrE,KAAK+D,KAEbM,GAIL9J,EAAK+J,QAAQ/J,EAAK6F,UAAYiE,GACvB9J,GAHEA,CAIX,+FC/BIgK,EAAuB,KAoBZ,SAASC,EAAS5D,EAAWwD,IAC1CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiN,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAOK,EAAAA,EAAAA,GAAgB7D,EAAWyD,EAASE,EAC7C,kFCNe,SAASE,EAAgB7D,EAAWwD,IACjDvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIsN,GAAY5D,EAAAA,EAAAA,SAAOF,GAAWF,UAC9B2D,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAO,IAAIpE,KAAK0E,EAAYL,EAC9B,+FCvBIM,EAAyB,IAoBd,SAASC,EAAWhE,EAAWwD,IAC5CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiN,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAOK,EAAAA,EAAAA,GAAgB7D,EAAWyD,EAASM,EAC7C,+FCNe,SAASE,EAAUjE,EAAWwD,IAC3CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdyD,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,GAAIJ,MAAMK,GACR,OAAO,IAAIrE,KAAK+D,KAElB,IAAKM,EAEH,OAAO9J,EAET,IAAIuK,EAAavK,EAAK6F,UAUlB2E,EAAoB,IAAI/E,KAAKzF,EAAKmG,WAGtC,OAFAqE,EAAkBC,SAASzK,EAAK4F,WAAakE,EAAS,EAAG,GAErDS,GADcC,EAAkB3E,UAI3B2E,GASPxK,EAAK0K,YAAYF,EAAkB7E,cAAe6E,EAAkB5E,WAAY2E,GACzEvK,EAEX,+FCvCe,SAAS2K,EAAYtE,EAAWwD,IAC7CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IACI+N,EAAkB,GADT5C,EAAAA,EAAAA,GAAU6B,GAEvB,OAAOS,EAAAA,EAAAA,SAAUjE,EAAWuE,EAC9B,6FCLe,SAASC,EAASxE,EAAWwD,IAC1CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IACIiO,EAAgB,GADP9C,EAAAA,EAAAA,GAAU6B,GAEvB,OAAOD,EAAAA,EAAAA,SAAQvD,EAAWyE,EAC5B,+FCLe,SAASC,EAAS1E,EAAWwD,IAC1CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiN,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAOS,EAAAA,EAAAA,SAAUjE,EAAoB,GAATyD,EAC9B,mECOqBzC,KAAK2D,IAAI,GAAI,GAxB3B,IAkCIC,EAAuB,IAUvBC,EAAqB,KAUrBC,EAAuB,iGC3D9BC,EAAsB,MAgCX,SAASC,EAAyBC,EAAeC,IAC9DjF,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAI2O,GAAiBC,EAAAA,EAAAA,SAAWH,GAC5BI,GAAkBD,EAAAA,EAAAA,SAAWF,GAC7BI,EAAgBH,EAAerF,WAAYZ,EAAAA,EAAAA,GAAgCiG,GAC3EI,EAAiBF,EAAgBvF,WAAYZ,EAAAA,EAAAA,GAAgCmG,GAKjF,OAAOrE,KAAKC,OAAOqE,EAAgBC,GAAkBR,EACvD,qFCvBe,SAASS,EAA2BP,EAAeC,IAChEjF,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiP,GAAWvF,EAAAA,EAAAA,SAAO+E,GAClBS,GAAYxF,EAAAA,EAAAA,SAAOgF,GAGvB,OAAkB,IAFHO,EAASnG,cAAgBoG,EAAUpG,gBAClCmG,EAASlG,WAAamG,EAAUnG,WAElD,qFCPe,SAASoG,EAA0BV,EAAeC,IAC/DjF,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiP,GAAWvF,EAAAA,EAAAA,SAAO+E,GAClBS,GAAYxF,EAAAA,EAAAA,SAAOgF,GACvB,OAAOO,EAASnG,cAAgBoG,EAAUpG,aAC5C,oFCRe,SAASsG,EAAS5F,IAC/BC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GAElB,OADArG,EAAKkM,SAAS,GAAI,GAAI,GAAI,KACnBlM,CACT,qFCLe,SAASmM,EAAW9F,IACjCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdzC,EAAQ5D,EAAK4F,WAGjB,OAFA5F,EAAK0K,YAAY1K,EAAK2F,cAAe/B,EAAQ,EAAG,GAChD5D,EAAKkM,SAAS,GAAI,GAAI,GAAI,KACnBlM,CACT,yGCIe,SAASoM,EAAU/F,EAAWlH,GAC3C,IAAIqI,EAAMC,EAAOC,EAAO6B,EAAuB3B,EAAiBC,EAAuBC,EAAuBC,GAC9GzB,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiI,GAAiBC,EAAAA,EAAAA,KACjBH,GAAeoD,EAAAA,EAAAA,GAA+0B,QAAp0BR,EAA8hB,QAAthBC,EAAkd,QAAzcC,EAA6G,QAApG6B,EAAoC,OAAZpK,QAAgC,IAAZA,OAAqB,EAASA,EAAQyF,oBAAoD,IAA1B2E,EAAmCA,EAAoC,OAAZpK,QAAgC,IAAZA,GAAqE,QAAtCyI,EAAkBzI,EAAQ8I,cAAwC,IAApBL,GAA4F,QAArDC,EAAwBD,EAAgBzI,eAA+C,IAA1B0I,OAA5J,EAAwMA,EAAsBjD,oBAAoC,IAAV8C,EAAmBA,EAAQ5C,EAAeF,oBAAoC,IAAV6C,EAAmBA,EAA4D,QAAnDK,EAAwBhD,EAAemD,cAA8C,IAA1BH,GAAyG,QAA5DC,EAAyBD,EAAsB3I,eAAgD,IAA3B4I,OAA9E,EAA2HA,EAAuBnD,oBAAmC,IAAT4C,EAAkBA,EAAO,GAGn4B,KAAM5C,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIsD,WAAW,oDAEvB,IAAIlI,GAAOuG,EAAAA,EAAAA,SAAOF,GACdxC,EAAM7D,EAAKqM,SACXnF,EAAuC,GAA/BrD,EAAMe,GAAgB,EAAI,IAAUf,EAAMe,GAGtD,OAFA5E,EAAK+J,QAAQ/J,EAAK6F,UAAYqB,GAC9BlH,EAAKkM,SAAS,GAAI,GAAI,GAAI,KACnBlM,CACT,qFC3Be,SAASsM,EAAUjG,IAChCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdG,EAAOxG,EAAK2F,cAGhB,OAFA3F,EAAK0K,YAAYlE,EAAO,EAAG,EAAG,GAC9BxG,EAAKkM,SAAS,GAAI,GAAI,GAAI,KACnBlM,CACT,qJC3Be,SAASuM,EAAgBnJ,EAAQoJ,GAG9C,IAFA,IAAIC,EAAOrJ,EAAS,EAAI,IAAM,GAC1BsJ,EAASrF,KAAKsF,IAAIvJ,GAAQ/F,WACvBqP,EAAO5P,OAAS0P,GACrBE,EAAS,IAAMA,EAEjB,OAAOD,EAAOC,CAChB,CCwEA,QAlEiB,CAEfE,EAAG,SAAW5M,EAAMf,GAUlB,IAAI4N,EAAa7M,EAAKyG,iBAElBD,EAAOqG,EAAa,EAAIA,EAAa,EAAIA,EAC7C,OAAON,EAA0B,OAAVtN,EAAiBuH,EAAO,IAAMA,EAAMvH,EAAMnC,OACnE,EAEAgQ,EAAG,SAAW9M,EAAMf,GAClB,IAAI2E,EAAQ5D,EAAK+M,cACjB,MAAiB,MAAV9N,EAAgBW,OAAOgE,EAAQ,GAAK2I,EAAgB3I,EAAQ,EAAG,EACxE,EAEAoJ,EAAG,SAAWhN,EAAMf,GAClB,OAAOsN,EAAgBvM,EAAKsJ,aAAcrK,EAAMnC,OAClD,EAEAmQ,EAAG,SAAWjN,EAAMf,GAClB,IAAIiO,EAAqBlN,EAAKmN,cAAgB,IAAM,EAAI,KAAO,KAC/D,OAAQlO,GACN,IAAK,IACL,IAAK,KACH,OAAOiO,EAAmBE,cAC5B,IAAK,MACH,OAAOF,EACT,IAAK,QACH,OAAOA,EAAmB,GAE5B,QACE,MAA8B,OAAvBA,EAA8B,OAAS,OAEpD,EAEAG,EAAG,SAAWrN,EAAMf,GAClB,OAAOsN,EAAgBvM,EAAKmN,cAAgB,IAAM,GAAIlO,EAAMnC,OAC9D,EAEAwQ,EAAG,SAAWtN,EAAMf,GAClB,OAAOsN,EAAgBvM,EAAKmN,cAAelO,EAAMnC,OACnD,EAEAyQ,EAAG,SAAWvN,EAAMf,GAClB,OAAOsN,EAAgBvM,EAAKwN,gBAAiBvO,EAAMnC,OACrD,EAEA2Q,EAAG,SAAWzN,EAAMf,GAClB,OAAOsN,EAAgBvM,EAAK0N,gBAAiBzO,EAAMnC,OACrD,EAEA6Q,EAAG,SAAW3N,EAAMf,GAClB,IAAI2O,EAAiB3O,EAAMnC,OACvB+Q,EAAe7N,EAAK8N,qBAExB,OAAOvB,EADiBlF,KAAKsC,MAAMkE,EAAexG,KAAK2D,IAAI,GAAI4C,EAAiB,IACtC3O,EAAMnC,OAClD,GCtEF,IAAIiR,EAGQ,WAHRA,EAII,OAJJA,EAKO,UALPA,EAMS,YANTA,EAOO,UAPPA,EAQK,QA0tBT,SAASC,EAAoBC,EAAQC,GACnC,IAAIzB,EAAOwB,EAAS,EAAI,IAAM,IAC1BE,EAAY9G,KAAKsF,IAAIsB,GACrBG,EAAQ/G,KAAKsC,MAAMwE,EAAY,IAC/BE,EAAUF,EAAY,GAC1B,GAAgB,IAAZE,EACF,OAAO5B,EAAO7M,OAAOwO,GAEvB,IAAIE,EAAYJ,GAAkB,GAClC,OAAOzB,EAAO7M,OAAOwO,GAASE,EAAY/B,EAAgB8B,EAAS,EACrE,CACA,SAASE,EAAkCN,EAAQC,GACjD,OAAID,EAAS,KAAO,GACPA,EAAS,EAAI,IAAM,KAChB1B,EAAgBlF,KAAKsF,IAAIsB,GAAU,GAAI,GAEhDO,EAAeP,EAAQC,EAChC,CACA,SAASM,EAAeP,EAAQC,GAC9B,IAAII,EAAYJ,GAAkB,GAC9BzB,EAAOwB,EAAS,EAAI,IAAM,IAC1BE,EAAY9G,KAAKsF,IAAIsB,GAGzB,OAAOxB,EAFKF,EAAgBlF,KAAKsC,MAAMwE,EAAY,IAAK,GAElCG,EADR/B,EAAgB4B,EAAY,GAAI,EAEhD,CACA,QApsBiB,CAEfM,EAAG,SAAWzO,EAAMf,EAAOgE,GACzB,IAAIM,EAAMvD,EAAKyG,iBAAmB,EAAI,EAAI,EAC1C,OAAQxH,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOgE,EAASM,IAAIA,EAAK,CACvB5D,MAAO,gBAGX,IAAK,QACH,OAAOsD,EAASM,IAAIA,EAAK,CACvB5D,MAAO,WAIX,QACE,OAAOsD,EAASM,IAAIA,EAAK,CACvB5D,MAAO,SAGf,EAEAiN,EAAG,SAAW5M,EAAMf,EAAOgE,GAEzB,GAAc,OAAVhE,EAAgB,CAClB,IAAI4N,EAAa7M,EAAKyG,iBAElBD,EAAOqG,EAAa,EAAIA,EAAa,EAAIA,EAC7C,OAAO5J,EAASC,cAAcsD,EAAM,CAClCkI,KAAM,QAEV,CACA,OAAOC,EAAgB/B,EAAE5M,EAAMf,EACjC,EAEA2P,EAAG,SAAW5O,EAAMf,EAAOgE,EAAU9D,GACnC,IAAI0P,GAAiBtH,EAAAA,EAAAA,GAAevH,EAAMb,GAEtC2P,EAAWD,EAAiB,EAAIA,EAAiB,EAAIA,EAGzD,MAAc,OAAV5P,EAEKsN,EADYuC,EAAW,IACO,GAIzB,OAAV7P,EACKgE,EAASC,cAAc4L,EAAU,CACtCJ,KAAM,SAKHnC,EAAgBuC,EAAU7P,EAAMnC,OACzC,EAEAiS,EAAG,SAAW/O,EAAMf,GAIlB,OAAOsN,GAHWnG,EAAAA,EAAAA,GAAkBpG,GAGAf,EAAMnC,OAC5C,EAUAkS,EAAG,SAAWhP,EAAMf,GAElB,OAAOsN,EADIvM,EAAKyG,iBACaxH,EAAMnC,OACrC,EAEAmS,EAAG,SAAWjP,EAAMf,EAAOgE,GACzB,IAAIU,EAAU0D,KAAKqC,MAAM1J,EAAK+M,cAAgB,GAAK,GACnD,OAAQ9N,GAEN,IAAK,IACH,OAAOW,OAAO+D,GAEhB,IAAK,KACH,OAAO4I,EAAgB5I,EAAS,GAElC,IAAK,KACH,OAAOV,EAASC,cAAcS,EAAS,CACrC+K,KAAM,YAGV,IAAK,MACH,OAAOzL,EAASU,QAAQA,EAAS,CAC/BhE,MAAO,cACPqB,QAAS,eAGb,IAAK,QACH,OAAOiC,EAASU,QAAQA,EAAS,CAC/BhE,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOiC,EAASU,QAAQA,EAAS,CAC/BhE,MAAO,OACPqB,QAAS,eAGjB,EAEAkO,EAAG,SAAWlP,EAAMf,EAAOgE,GACzB,IAAIU,EAAU0D,KAAKqC,MAAM1J,EAAK+M,cAAgB,GAAK,GACnD,OAAQ9N,GAEN,IAAK,IACH,OAAOW,OAAO+D,GAEhB,IAAK,KACH,OAAO4I,EAAgB5I,EAAS,GAElC,IAAK,KACH,OAAOV,EAASC,cAAcS,EAAS,CACrC+K,KAAM,YAGV,IAAK,MACH,OAAOzL,EAASU,QAAQA,EAAS,CAC/BhE,MAAO,cACPqB,QAAS,eAGb,IAAK,QACH,OAAOiC,EAASU,QAAQA,EAAS,CAC/BhE,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOiC,EAASU,QAAQA,EAAS,CAC/BhE,MAAO,OACPqB,QAAS,eAGjB,EAEA8L,EAAG,SAAW9M,EAAMf,EAAOgE,GACzB,IAAIW,EAAQ5D,EAAK+M,cACjB,OAAQ9N,GACN,IAAK,IACL,IAAK,KACH,OAAO0P,EAAgB7B,EAAE9M,EAAMf,GAEjC,IAAK,KACH,OAAOgE,EAASC,cAAcU,EAAQ,EAAG,CACvC8K,KAAM,UAGV,IAAK,MACH,OAAOzL,EAASW,MAAMA,EAAO,CAC3BjE,MAAO,cACPqB,QAAS,eAGb,IAAK,QACH,OAAOiC,EAASW,MAAMA,EAAO,CAC3BjE,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOiC,EAASW,MAAMA,EAAO,CAC3BjE,MAAO,OACPqB,QAAS,eAGjB,EAEAmO,EAAG,SAAWnP,EAAMf,EAAOgE,GACzB,IAAIW,EAAQ5D,EAAK+M,cACjB,OAAQ9N,GAEN,IAAK,IACH,OAAOW,OAAOgE,EAAQ,GAExB,IAAK,KACH,OAAO2I,EAAgB3I,EAAQ,EAAG,GAEpC,IAAK,KACH,OAAOX,EAASC,cAAcU,EAAQ,EAAG,CACvC8K,KAAM,UAGV,IAAK,MACH,OAAOzL,EAASW,MAAMA,EAAO,CAC3BjE,MAAO,cACPqB,QAAS,eAGb,IAAK,QACH,OAAOiC,EAASW,MAAMA,EAAO,CAC3BjE,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOiC,EAASW,MAAMA,EAAO,CAC3BjE,MAAO,OACPqB,QAAS,eAGjB,EAEAoO,EAAG,SAAWpP,EAAMf,EAAOgE,EAAU9D,GACnC,IAAIkQ,GAAO/G,EAAAA,EAAAA,GAAWtI,EAAMb,GAC5B,MAAc,OAAVF,EACKgE,EAASC,cAAcmM,EAAM,CAClCX,KAAM,SAGHnC,EAAgB8C,EAAMpQ,EAAMnC,OACrC,EAEAwS,EAAG,SAAWtP,EAAMf,EAAOgE,GACzB,IAAIsM,GAAUtI,EAAAA,EAAAA,GAAcjH,GAC5B,MAAc,OAAVf,EACKgE,EAASC,cAAcqM,EAAS,CACrCb,KAAM,SAGHnC,EAAgBgD,EAAStQ,EAAMnC,OACxC,EAEAkQ,EAAG,SAAWhN,EAAMf,EAAOgE,GACzB,MAAc,OAAVhE,EACKgE,EAASC,cAAclD,EAAKsJ,aAAc,CAC/CoF,KAAM,SAGHC,EAAgB3B,EAAEhN,EAAMf,EACjC,EAEAuQ,EAAG,SAAWxP,EAAMf,EAAOgE,GACzB,IAAIwM,ECxTO,SAAyBpJ,IACtCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACd8D,EAAYnK,EAAKmG,UACrBnG,EAAK0P,YAAY,EAAG,GACpB1P,EAAK2G,YAAY,EAAG,EAAG,EAAG,GAC1B,IACIgJ,EAAaxF,EADUnK,EAAKmG,UAEhC,OAAOkB,KAAKsC,MAAMgG,EATM,OAS8B,CACxD,CD+SoBC,CAAgB5P,GAChC,MAAc,OAAVf,EACKgE,EAASC,cAAcuM,EAAW,CACvCf,KAAM,cAGHnC,EAAgBkD,EAAWxQ,EAAMnC,OAC1C,EAEA+S,EAAG,SAAW7P,EAAMf,EAAOgE,GACzB,IAAI6M,EAAY9P,EAAKoJ,YACrB,OAAQnK,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOgE,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,cACPqB,QAAS,eAGb,IAAK,QACH,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,SACPqB,QAAS,eAGb,IAAK,SACH,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,QACPqB,QAAS,eAIb,QACE,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,OACPqB,QAAS,eAGjB,EAEA+O,EAAG,SAAW/P,EAAMf,EAAOgE,EAAU9D,GACnC,IAAI2Q,EAAY9P,EAAKoJ,YACjB4G,GAAkBF,EAAY3Q,EAAQyF,aAAe,GAAK,GAAK,EACnE,OAAQ3F,GAEN,IAAK,IACH,OAAOW,OAAOoQ,GAEhB,IAAK,KACH,OAAOzD,EAAgByD,EAAgB,GAEzC,IAAK,KACH,OAAO/M,EAASC,cAAc8M,EAAgB,CAC5CtB,KAAM,QAEV,IAAK,MACH,OAAOzL,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,cACPqB,QAAS,eAGb,IAAK,QACH,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,SACPqB,QAAS,eAGb,IAAK,SACH,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,QACPqB,QAAS,eAIb,QACE,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,OACPqB,QAAS,eAGjB,EAEAiP,EAAG,SAAWjQ,EAAMf,EAAOgE,EAAU9D,GACnC,IAAI2Q,EAAY9P,EAAKoJ,YACjB4G,GAAkBF,EAAY3Q,EAAQyF,aAAe,GAAK,GAAK,EACnE,OAAQ3F,GAEN,IAAK,IACH,OAAOW,OAAOoQ,GAEhB,IAAK,KACH,OAAOzD,EAAgByD,EAAgB/Q,EAAMnC,QAE/C,IAAK,KACH,OAAOmG,EAASC,cAAc8M,EAAgB,CAC5CtB,KAAM,QAEV,IAAK,MACH,OAAOzL,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,cACPqB,QAAS,eAGb,IAAK,QACH,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,SACPqB,QAAS,eAGb,IAAK,SACH,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,QACPqB,QAAS,eAIb,QACE,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,OACPqB,QAAS,eAGjB,EAEApE,EAAG,SAAWoD,EAAMf,EAAOgE,GACzB,IAAI6M,EAAY9P,EAAKoJ,YACjB8G,EAA6B,IAAdJ,EAAkB,EAAIA,EACzC,OAAQ7Q,GAEN,IAAK,IACH,OAAOW,OAAOsQ,GAEhB,IAAK,KACH,OAAO3D,EAAgB2D,EAAcjR,EAAMnC,QAE7C,IAAK,KACH,OAAOmG,EAASC,cAAcgN,EAAc,CAC1CxB,KAAM,QAGV,IAAK,MACH,OAAOzL,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,cACPqB,QAAS,eAGb,IAAK,QACH,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,SACPqB,QAAS,eAGb,IAAK,SACH,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,QACPqB,QAAS,eAIb,QACE,OAAOiC,EAASY,IAAIiM,EAAW,CAC7BnQ,MAAO,OACPqB,QAAS,eAGjB,EAEAiM,EAAG,SAAWjN,EAAMf,EAAOgE,GACzB,IACIiK,EADQlN,EAAKmN,cACgB,IAAM,EAAI,KAAO,KAClD,OAAQlO,GACN,IAAK,IACL,IAAK,KACH,OAAOgE,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,cACPqB,QAAS,eAEb,IAAK,MACH,OAAOiC,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,cACPqB,QAAS,eACRmP,cACL,IAAK,QACH,OAAOlN,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,SACPqB,QAAS,eAGb,QACE,OAAOiC,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,OACPqB,QAAS,eAGjB,EAEAoP,EAAG,SAAWpQ,EAAMf,EAAOgE,GACzB,IACIiK,EADAkB,EAAQpO,EAAKmN,cASjB,OANED,EADY,KAAVkB,EACmBL,EACF,IAAVK,EACYL,EAEAK,EAAQ,IAAM,EAAI,KAAO,KAExCnP,GACN,IAAK,IACL,IAAK,KACH,OAAOgE,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,cACPqB,QAAS,eAEb,IAAK,MACH,OAAOiC,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,cACPqB,QAAS,eACRmP,cACL,IAAK,QACH,OAAOlN,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,SACPqB,QAAS,eAGb,QACE,OAAOiC,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,OACPqB,QAAS,eAGjB,EAEAqP,EAAG,SAAWrQ,EAAMf,EAAOgE,GACzB,IACIiK,EADAkB,EAAQpO,EAAKmN,cAWjB,OARED,EADEkB,GAAS,GACUL,EACZK,GAAS,GACGL,EACZK,GAAS,EACGL,EAEAA,EAEf9O,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOgE,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,cACPqB,QAAS,eAEb,IAAK,QACH,OAAOiC,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,SACPqB,QAAS,eAGb,QACE,OAAOiC,EAASa,UAAUoJ,EAAoB,CAC5CvN,MAAO,OACPqB,QAAS,eAGjB,EAEAqM,EAAG,SAAWrN,EAAMf,EAAOgE,GACzB,GAAc,OAAVhE,EAAgB,CAClB,IAAImP,EAAQpO,EAAKmN,cAAgB,GAEjC,OADc,IAAViB,IAAaA,EAAQ,IAClBnL,EAASC,cAAckL,EAAO,CACnCM,KAAM,QAEV,CACA,OAAOC,EAAgBtB,EAAErN,EAAMf,EACjC,EAEAqO,EAAG,SAAWtN,EAAMf,EAAOgE,GACzB,MAAc,OAAVhE,EACKgE,EAASC,cAAclD,EAAKmN,cAAe,CAChDuB,KAAM,SAGHC,EAAgBrB,EAAEtN,EAAMf,EACjC,EAEAqR,EAAG,SAAWtQ,EAAMf,EAAOgE,GACzB,IAAImL,EAAQpO,EAAKmN,cAAgB,GACjC,MAAc,OAAVlO,EACKgE,EAASC,cAAckL,EAAO,CACnCM,KAAM,SAGHnC,EAAgB6B,EAAOnP,EAAMnC,OACtC,EAEAyT,EAAG,SAAWvQ,EAAMf,EAAOgE,GACzB,IAAImL,EAAQpO,EAAKmN,cAEjB,OADc,IAAViB,IAAaA,EAAQ,IACX,OAAVnP,EACKgE,EAASC,cAAckL,EAAO,CACnCM,KAAM,SAGHnC,EAAgB6B,EAAOnP,EAAMnC,OACtC,EAEAyQ,EAAG,SAAWvN,EAAMf,EAAOgE,GACzB,MAAc,OAAVhE,EACKgE,EAASC,cAAclD,EAAKwN,gBAAiB,CAClDkB,KAAM,WAGHC,EAAgBpB,EAAEvN,EAAMf,EACjC,EAEAwO,EAAG,SAAWzN,EAAMf,EAAOgE,GACzB,MAAc,OAAVhE,EACKgE,EAASC,cAAclD,EAAK0N,gBAAiB,CAClDgB,KAAM,WAGHC,EAAgBlB,EAAEzN,EAAMf,EACjC,EAEA0O,EAAG,SAAW3N,EAAMf,GAClB,OAAO0P,EAAgBhB,EAAE3N,EAAMf,EACjC,EAEAuR,EAAG,SAAWxQ,EAAMf,EAAOwR,EAAWtR,GACpC,IACIuR,GADevR,EAAQwR,eAAiB3Q,GACV4Q,oBAClC,GAAuB,IAAnBF,EACF,MAAO,IAET,OAAQzR,GAEN,IAAK,IACH,OAAOsP,EAAkCmC,GAK3C,IAAK,OACL,IAAK,KAEH,OAAOlC,EAAekC,GAOxB,QACE,OAAOlC,EAAekC,EAAgB,KAE5C,EAEAG,EAAG,SAAW7Q,EAAMf,EAAOwR,EAAWtR,GACpC,IACIuR,GADevR,EAAQwR,eAAiB3Q,GACV4Q,oBAClC,OAAQ3R,GAEN,IAAK,IACH,OAAOsP,EAAkCmC,GAK3C,IAAK,OACL,IAAK,KAEH,OAAOlC,EAAekC,GAOxB,QACE,OAAOlC,EAAekC,EAAgB,KAE5C,EAEAI,EAAG,SAAW9Q,EAAMf,EAAOwR,EAAWtR,GACpC,IACIuR,GADevR,EAAQwR,eAAiB3Q,GACV4Q,oBAClC,OAAQ3R,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQ+O,EAAoB0C,EAAgB,KAGrD,QACE,MAAO,MAAQlC,EAAekC,EAAgB,KAEpD,EAEAK,EAAG,SAAW/Q,EAAMf,EAAOwR,EAAWtR,GACpC,IACIuR,GADevR,EAAQwR,eAAiB3Q,GACV4Q,oBAClC,OAAQ3R,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQ+O,EAAoB0C,EAAgB,KAGrD,QACE,MAAO,MAAQlC,EAAekC,EAAgB,KAEpD,EAEAM,EAAG,SAAWhR,EAAMf,EAAOwR,EAAWtR,GACpC,IAAI8R,EAAe9R,EAAQwR,eAAiB3Q,EAE5C,OAAOuM,EADSlF,KAAKsC,MAAMsH,EAAa9K,UAAY,KAClBlH,EAAMnC,OAC1C,EAEAoU,EAAG,SAAWlR,EAAMf,EAAOwR,EAAWtR,GAGpC,OAAOoN,GAFYpN,EAAQwR,eAAiB3Q,GACfmG,UACKlH,EAAMnC,OAC1C,mEEltBEqU,EAAyB,wDAIzBC,EAA6B,oCAC7BC,EAAsB,eACtBC,EAAoB,MACpBC,EAAgC,WAsSrB,SAASxI,EAAO1C,EAAWmL,EAAgBrS,GACxD,IAAIqI,EAAMI,EAAiBH,EAAOC,EAAO+J,EAAO9J,EAAuB+J,EAAkBC,EAAuB7J,EAAuBC,EAAwB6J,EAAOC,EAAOC,EAAOvI,EAAuBwI,EAAkBC,EAAuBC,EAAwBC,GAC5Q5L,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIsV,EAAYvS,OAAO4R,GACnB1M,GAAiBC,EAAAA,EAAAA,KACjBkD,EAA4L,QAAlLT,EAAgG,QAAxFI,EAA8B,OAAZzI,QAAgC,IAAZA,OAAqB,EAASA,EAAQ8I,cAAwC,IAApBL,EAA6BA,EAAkB9C,EAAemD,cAA6B,IAATT,EAAkBA,EAAO4K,EAAAA,EAC7NvN,GAAwBmD,EAAAA,EAAAA,GAAu3B,QAA52BP,EAA6jB,QAApjBC,EAAue,QAA9d+J,EAAsH,QAA7G9J,EAAoC,OAAZxI,QAAgC,IAAZA,OAAqB,EAASA,EAAQ0F,6BAA6D,IAA1B8C,EAAmCA,EAAoC,OAAZxI,QAAgC,IAAZA,GAAsE,QAAvCuS,EAAmBvS,EAAQ8I,cAAyC,IAArByJ,GAA8F,QAAtDC,EAAwBD,EAAiBvS,eAA+C,IAA1BwS,OAA/J,EAA2MA,EAAsB9M,6BAA6C,IAAV4M,EAAmBA,EAAQ3M,EAAeD,6BAA6C,IAAV6C,EAAmBA,EAA4D,QAAnDI,EAAwBhD,EAAemD,cAA8C,IAA1BH,GAAyG,QAA5DC,EAAyBD,EAAsB3I,eAAgD,IAA3B4I,OAA9E,EAA2HA,EAAuBlD,6BAA6C,IAAV4C,EAAmBA,EAAQ,GAGt7B,KAAM5C,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIqD,WAAW,6DAEvB,IAAItD,GAAeoD,EAAAA,EAAAA,GAAs1B,QAA30B4J,EAAkiB,QAAzhBC,EAAqd,QAA5cC,EAA6G,QAApGvI,EAAoC,OAAZpK,QAAgC,IAAZA,OAAqB,EAASA,EAAQyF,oBAAoD,IAA1B2E,EAAmCA,EAAoC,OAAZpK,QAAgC,IAAZA,GAAsE,QAAvC4S,EAAmB5S,EAAQ8I,cAAyC,IAArB8J,GAA8F,QAAtDC,EAAwBD,EAAiB5S,eAA+C,IAA1B6S,OAA/J,EAA2MA,EAAsBpN,oBAAoC,IAAVkN,EAAmBA,EAAQhN,EAAeF,oBAAoC,IAAViN,EAAmBA,EAA6D,QAApDI,EAAyBnN,EAAemD,cAA+C,IAA3BgK,GAA2G,QAA7DC,EAAyBD,EAAuB9S,eAAgD,IAA3B+S,OAA/E,EAA4HA,EAAuBtN,oBAAoC,IAAVgN,EAAmBA,EAAQ,GAG54B,KAAMhN,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIsD,WAAW,oDAEvB,IAAKD,EAAOhF,SACV,MAAM,IAAIiF,WAAW,yCAEvB,IAAKD,EAAOlI,WACV,MAAM,IAAImI,WAAW,2CAEvB,IAAI+I,GAAe1K,EAAAA,EAAAA,SAAOF,GAC1B,KAAKgM,EAAAA,EAAAA,SAAQpB,GACX,MAAM,IAAI/I,WAAW,sBAMvB,IAAIwI,GAAiBnL,EAAAA,EAAAA,GAAgC0L,GACjDzL,GAAU8M,EAAAA,EAAAA,GAAgBrB,EAAcP,GACxC6B,EAAmB,CACrB1N,sBAAuBA,EACvBD,aAAcA,EACdqD,OAAQA,EACR0I,cAAeM,GAiCjB,OA/BakB,EAAUtQ,MAAMuP,GAA4BoB,KAAI,SAAUC,GACrE,IAAIC,EAAiBD,EAAU,GAC/B,MAAuB,MAAnBC,GAA6C,MAAnBA,GAErBC,EADaC,EAAAA,EAAeF,IACdD,EAAWxK,EAAOlI,YAElC0S,CACT,IAAG/U,KAAK,IAAImE,MAAMsP,GAAwBqB,KAAI,SAAUC,GAEtD,GAAkB,OAAdA,EACF,MAAO,IAET,IAAIC,EAAiBD,EAAU,GAC/B,GAAuB,MAAnBC,EACF,OAmBN,SAA4B1J,GAC1B,IAAI6J,EAAU7J,EAAMnH,MAAMwP,GAC1B,IAAKwB,EACH,OAAO7J,EAET,OAAO6J,EAAQ,GAAGvT,QAAQgS,EAAmB,IAC/C,CAzBawB,CAAmBL,GAE5B,IAAIM,EAAYC,EAAWN,GAC3B,GAAIK,EAOF,OANkB,OAAZ5T,QAAgC,IAAZA,GAAsBA,EAAQ8T,+BAAgCpK,EAAAA,EAAAA,IAAyB4J,KAC/G3J,EAAAA,EAAAA,IAAoB2J,EAAWjB,EAAgB5R,OAAOyG,IAEtC,OAAZlH,QAAgC,IAAZA,GAAsBA,EAAQ+T,gCAAiCvK,EAAAA,EAAAA,IAA0B8J,KACjH3J,EAAAA,EAAAA,IAAoB2J,EAAWjB,EAAgB5R,OAAOyG,IAEjD0M,EAAUvN,EAASiN,EAAWxK,EAAOhF,SAAUsP,GAExD,GAAIG,EAAe7Q,MAAM0P,GACvB,MAAM,IAAIrJ,WAAW,iEAAmEwK,EAAiB,KAE3G,OAAOD,CACT,IAAG/U,KAAK,GAEV,qFCvXe,SAASmI,EAAQQ,GAI9B,OAHAC,EAAAA,EAAAA,GAAa,EAAGzJ,YACL0J,EAAAA,EAAAA,SAAOF,GACIR,SAExB,oFCLe,SAASwG,EAAOhG,GAI7B,OAHAC,EAAAA,EAAAA,GAAa,EAAGzJ,YACL0J,EAAAA,EAAAA,SAAOF,GACHgG,QAEjB,qFCLe,SAASvG,EAASO,GAI/B,OAHAC,EAAAA,EAAAA,GAAa,EAAGzJ,YACL0J,EAAAA,EAAAA,SAAOF,GACDP,UAEnB,+FCFe,SAASqN,EAAe9M,GAErC,OADAC,EAAAA,EAAAA,GAAa,EAAGzJ,YACTuW,EAAAA,EAAAA,SAAY/M,EAAW,CAC5BzB,aAAc,GAElB,CCHe,SAASyO,EAAmBhN,IACzCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAI2J,ECHS,SAAwBH,IACrCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdG,EAAOxG,EAAK2F,cACZe,EAA4B,IAAIjB,KAAK,GACzCiB,EAA0BgE,YAAYlE,EAAO,EAAG,EAAG,GACnDE,EAA0BwF,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAItF,EAAkBuM,EAAezM,GACjCI,EAA4B,IAAIrB,KAAK,GACzCqB,EAA0B4D,YAAYlE,EAAM,EAAG,GAC/CM,EAA0BoF,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAInF,EAAkBoM,EAAerM,GACrC,OAAI9G,EAAKmG,WAAaS,EAAgBT,UAC7BK,EAAO,EACLxG,EAAKmG,WAAaY,EAAgBZ,UACpCK,EAEAA,EAAO,CAElB,CDhBa8M,CAAejN,GACtBc,EAAkB,IAAI1B,KAAK,GAI/B,OAHA0B,EAAgBuD,YAAYlE,EAAM,EAAG,GACrCW,EAAgB+E,SAAS,EAAG,EAAG,EAAG,GACvBiH,EAAehM,EAE5B,CE5BA,IAAIH,EAAuB,OAqBZ,SAASuM,EAAWlN,IACjCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACda,EAAOiM,EAAenT,GAAMmG,UAAYkN,EAAmBrT,GAAMmG,UAKrE,OAAOkB,KAAKC,MAAMJ,EAAOF,GAAwB,CACnD,qFCfe,SAASjB,EAAWM,GAIjC,OAHAC,EAAAA,EAAAA,GAAa,EAAGzJ,YACL0J,EAAAA,EAAAA,SAAOF,GACCN,YAErB,qFCLe,SAASH,EAASS,GAI/B,OAHAC,EAAAA,EAAAA,GAAa,EAAGzJ,YACL0J,EAAAA,EAAAA,SAAOF,GACDT,UAEnB,oFCLe,SAAS4N,EAAWnN,IACjCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GAElB,OADcgB,KAAKsC,MAAM3J,EAAK4F,WAAa,GAAK,CAElD,qFCLe,SAASI,EAAWK,GAIjC,OAHAC,EAAAA,EAAAA,GAAa,EAAGzJ,YACL0J,EAAAA,EAAAA,SAAOF,GACCL,YAErB,qFCLe,SAASG,EAAQE,GAI9B,OAHAC,EAAAA,EAAAA,GAAa,EAAGzJ,YACL0J,EAAAA,EAAAA,SAAOF,GACGF,SAEvB,qFCLe,SAASsN,EAAQpN,GAE9B,OADAC,EAAAA,EAAAA,GAAa,EAAGzJ,YACT0J,EAAAA,EAAAA,SAAOF,GAAWV,aAC3B,qFCFe,SAAS+N,EAAQrN,EAAWsN,IACzCrN,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACduN,GAAgBrN,EAAAA,EAAAA,SAAOoN,GAC3B,OAAO3T,EAAKmG,UAAYyN,EAAczN,SACxC,qFCLe,SAAS0N,EAASxN,EAAWsN,IAC1CrN,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACduN,GAAgBrN,EAAAA,EAAAA,SAAOoN,GAC3B,OAAO3T,EAAKmG,UAAYyN,EAAczN,SACxC,qFCSe,SAAS2N,EAAOhS,GAE7B,OADAwE,EAAAA,EAAAA,GAAa,EAAGzJ,WACTiF,aAAiB2D,MAA2B,YAAnBsO,EAAAA,EAAAA,GAAQjS,IAAiE,kBAA1C1F,OAAOkB,UAAUD,SAASI,KAAKqE,EAChG,qFCde,SAASkS,EAAQC,EAAeC,IAC7C5N,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiP,GAAWvF,EAAAA,EAAAA,SAAO0N,GAClBlI,GAAYxF,EAAAA,EAAAA,SAAO2N,GACvB,OAAOpI,EAAS3F,YAAc4F,EAAU5F,SAC1C,qFCEe,SAASgO,EAAU7I,EAAeC,IAC/CjF,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIuX,GAAqB3I,EAAAA,EAAAA,SAAWH,GAChC+I,GAAsB5I,EAAAA,EAAAA,SAAWF,GACrC,OAAO6I,EAAmBjO,YAAckO,EAAoBlO,SAC9D,qFCVe,SAASmO,EAAYhJ,EAAeC,IACjDjF,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiP,GAAWvF,EAAAA,EAAAA,SAAO+E,GAClBS,GAAYxF,EAAAA,EAAAA,SAAOgF,GACvB,OAAOO,EAASnG,gBAAkBoG,EAAUpG,eAAiBmG,EAASlG,aAAemG,EAAUnG,UACjG,qFCLe,SAAS2O,EAAcjJ,EAAeC,IACnDjF,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAI2X,GAAyBC,EAAAA,EAAAA,SAAenJ,GACxCoJ,GAA0BD,EAAAA,EAAAA,SAAelJ,GAC7C,OAAOiJ,EAAuBrO,YAAcuO,EAAwBvO,SACtE,qFCVe,SAASwO,EAAWrJ,EAAeC,IAChDjF,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiP,GAAWvF,EAAAA,EAAAA,SAAO+E,GAClBS,GAAYxF,EAAAA,EAAAA,SAAOgF,GACvB,OAAOO,EAASnG,gBAAkBoG,EAAUpG,aAC9C,+FCSe,SAAS0M,EAAQhM,GAE9B,IADAC,EAAAA,EAAAA,GAAa,EAAGzJ,aACXiX,EAAAA,EAAAA,SAAOzN,IAAmC,kBAAdA,EAC/B,OAAO,EAET,IAAIrG,GAAOuG,EAAAA,EAAAA,SAAOF,GAClB,OAAQoD,MAAMpG,OAAOrD,GACvB,qFCAe,SAAS4U,EAAiBvO,EAAWwO,IAClDvO,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIwD,GAAOkG,EAAAA,EAAAA,SAAOF,GAAWF,UACzB2O,GAAYvO,EAAAA,EAAAA,SAAOsO,EAASE,OAAO5O,UACnC6O,GAAUzO,EAAAA,EAAAA,SAAOsO,EAASI,KAAK9O,UAGnC,KAAM2O,GAAaE,GACjB,MAAM,IAAI9M,WAAW,oBAEvB,OAAO7H,GAAQyU,GAAazU,GAAQ2U,CACtC,+FC3Be,SAASE,EAAIC,GAE1B,IAAIC,EAYAhW,EAVJ,IAHAkH,EAAAA,EAAAA,GAAa,EAAGzJ,WAGZsY,GAAsD,oBAA5BA,EAAgBE,QAC5CD,EAAaD,MAGR,IAAiC,YAA7BpB,EAAAA,EAAAA,GAAQoB,IAAqD,OAApBA,EAIlD,OAAO,IAAI1P,KAAK+D,KAHhB4L,EAAanY,MAAMK,UAAUoF,MAAMjF,KAAK0X,EAI1C,CAQA,OANAC,EAAWC,SAAQ,SAAUhP,GAC3B,IAAIiP,GAAc/O,EAAAA,EAAAA,SAAOF,SACV9J,IAAX6C,GAAwBA,EAASkW,GAAe7L,MAAMpG,OAAOiS,OAC/DlW,EAASkW,EAEb,IACOlW,GAAU,IAAIqG,KAAK+D,IAC5B,+FCtBe,SAAS+L,EAAIJ,GAE1B,IAAIC,EAWAhW,EATJ,IAHAkH,EAAAA,EAAAA,GAAa,EAAGzJ,WAGZsY,GAAsD,oBAA5BA,EAAgBE,QAC5CD,EAAaD,MAER,IAAiC,YAA7BpB,EAAAA,EAAAA,GAAQoB,IAAqD,OAApBA,EAIlD,OAAO,IAAI1P,KAAK+D,KAHhB4L,EAAanY,MAAMK,UAAUoF,MAAMjF,KAAK0X,EAI1C,CAQA,OANAC,EAAWC,SAAQ,SAAUhP,GAC3B,IAAIiP,GAAc/O,EAAAA,EAAAA,SAAOF,SACV9J,IAAX6C,GAAwBA,EAASkW,GAAe7L,MAAM6L,EAAYzP,cACpEzG,EAASkW,EAEb,IACOlW,GAAU,IAAIqG,KAAK+D,IAC5B,+FCXe,SAASgM,EAASC,EAAUtW,GACzC,IAAIuW,GACJpP,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAI8Y,GAAmB3N,EAAAA,EAAAA,GAAmH,QAAxG0N,EAAoC,OAAZvW,QAAgC,IAAZA,OAAqB,EAASA,EAAQwW,wBAAwD,IAA1BD,EAAmCA,EAAwB,GAC7M,GAAyB,IAArBC,GAA+C,IAArBA,GAA+C,IAArBA,EACtD,MAAM,IAAIzN,WAAW,sCAEvB,GAA0B,kBAAbuN,GAAsE,oBAA7CrZ,OAAOkB,UAAUD,SAASI,KAAKgY,GACnE,OAAO,IAAIhQ,KAAK+D,KAElB,IACIxJ,EADA4V,EA6CN,SAAyBC,GACvB,IAEIC,EAFAF,EAAc,CAAC,EACf1T,EAAQ2T,EAAWE,MAAMC,EAASC,mBAKtC,GAAI/T,EAAMpF,OAAS,EACjB,OAAO8Y,EAEL,IAAI5Z,KAAKkG,EAAM,IACjB4T,EAAa5T,EAAM,IAEnB0T,EAAY5V,KAAOkC,EAAM,GACzB4T,EAAa5T,EAAM,GACf8T,EAASE,kBAAkBla,KAAK4Z,EAAY5V,QAC9C4V,EAAY5V,KAAO6V,EAAWE,MAAMC,EAASE,mBAAmB,GAChEJ,EAAaD,EAAWM,OAAOP,EAAY5V,KAAKlD,OAAQ+Y,EAAW/Y,UAGvE,GAAIgZ,EAAY,CACd,IAAI7W,EAAQ+W,EAASI,SAASC,KAAKP,GAC/B7W,GACF2W,EAAYvV,KAAOyV,EAAWxW,QAAQL,EAAM,GAAI,IAChD2W,EAAYQ,SAAWnX,EAAM,IAE7B2W,EAAYvV,KAAOyV,CAEvB,CACA,OAAOF,CACT,CA3EoBU,CAAgBb,GAElC,GAAIG,EAAY5V,KAAM,CACpB,IAAIuW,EAyER,SAAmBV,EAAYF,GAC7B,IAAIa,EAAQ,IAAIC,OAAO,wBAA0B,EAAId,GAAoB,uBAAyB,EAAIA,GAAoB,QACtHe,EAAWb,EAAWhU,MAAM2U,GAEhC,IAAKE,EAAU,MAAO,CACpBlQ,KAAMgD,IACNmN,eAAgB,IAElB,IAAInQ,EAAOkQ,EAAS,GAAKlS,SAASkS,EAAS,IAAM,KAC7CE,EAAUF,EAAS,GAAKlS,SAASkS,EAAS,IAAM,KAGpD,MAAO,CACLlQ,KAAkB,OAAZoQ,EAAmBpQ,EAAiB,IAAVoQ,EAChCD,eAAgBd,EAAWnT,OAAOgU,EAAS,IAAMA,EAAS,IAAI5Z,QAElE,CAzF0B+Z,CAAUjB,EAAY5V,KAAM2V,GAClD3V,EAyFJ,SAAmB6V,EAAYrP,GAE7B,GAAa,OAATA,EAAe,OAAO,IAAIf,KAAK+D,KACnC,IAAIkN,EAAWb,EAAWhU,MAAMiV,GAEhC,IAAKJ,EAAU,OAAO,IAAIjR,KAAK+D,KAC/B,IAAIuN,IAAeL,EAAS,GACxBjH,EAAYuH,EAAcN,EAAS,IACnC9S,EAAQoT,EAAcN,EAAS,IAAM,EACrC7S,EAAMmT,EAAcN,EAAS,IAC7BrH,EAAO2H,EAAcN,EAAS,IAC9B5G,EAAYkH,EAAcN,EAAS,IAAM,EAC7C,GAAIK,EACF,OAiEJ,SAA0BE,EAAO5H,EAAMxL,GACrC,OAAOwL,GAAQ,GAAKA,GAAQ,IAAMxL,GAAO,GAAKA,GAAO,CACvD,CAnESqT,CAAiB1Q,EAAM6I,EAAMS,GA2CtC,SAA0BqH,EAAa9H,EAAMxL,GAC3C,IAAI7D,EAAO,IAAIyF,KAAK,GACpBzF,EAAKkG,eAAeiR,EAAa,EAAG,GACpC,IAAIC,EAAqBpX,EAAKoJ,aAAe,EACzClC,EAAoB,GAAZmI,EAAO,GAASxL,EAAM,EAAIuT,EAEtC,OADApX,EAAKqJ,WAAWrJ,EAAKsJ,aAAepC,GAC7BlH,CACT,CA/CWqX,CAAiB7Q,EAAM6I,EAAMS,GAF3B,IAAIrK,KAAK+D,KAIlB,IAAIxJ,EAAO,IAAIyF,KAAK,GACpB,OAqDJ,SAAsBe,EAAM5C,EAAO5D,GACjC,OAAO4D,GAAS,GAAKA,GAAS,IAAM5D,GAAQ,GAAKA,IAASsX,EAAa1T,KAAW2T,EAAgB/Q,GAAQ,GAAK,IACjH,CAvDSgR,CAAahR,EAAM5C,EAAOC,IAwDnC,SAA+B2C,EAAMiJ,GACnC,OAAOA,GAAa,GAAKA,IAAc8H,EAAgB/Q,GAAQ,IAAM,IACvE,CA1D4CiR,CAAsBjR,EAAMiJ,IAGpEzP,EAAKkG,eAAeM,EAAM5C,EAAOyD,KAAK6N,IAAIzF,EAAW5L,IAC9C7D,GAHE,IAAIyF,KAAK+D,IAKtB,CAlHWkO,CAAUnB,EAAgBI,eAAgBJ,EAAgB/P,KACnE,CACA,IAAKxG,GAAQyJ,MAAMzJ,EAAKmG,WACtB,OAAO,IAAIV,KAAK+D,KAElB,IAEIyE,EAFA9D,EAAYnK,EAAKmG,UACjB9F,EAAO,EAEX,GAAIuV,EAAYvV,OACdA,EA6GJ,SAAmByV,GACjB,IAAIY,EAAWZ,EAAWjU,MAAM8V,GAChC,IAAKjB,EAAU,OAAOlN,IAEtB,IAAI4E,EAAQwJ,EAAclB,EAAS,IAC/BrI,EAAUuJ,EAAclB,EAAS,IACjCmB,EAAUD,EAAclB,EAAS,IACrC,IA6CF,SAAsBtI,EAAOC,EAASwJ,GACpC,GAAc,KAAVzJ,EACF,OAAmB,IAAZC,GAA6B,IAAZwJ,EAE1B,OAAOA,GAAW,GAAKA,EAAU,IAAMxJ,GAAW,GAAKA,EAAU,IAAMD,GAAS,GAAKA,EAAQ,EAC/F,CAlDO0J,CAAa1J,EAAOC,EAASwJ,GAChC,OAAOrO,IAET,OAAO4E,EAAQlD,EAAAA,GAAqBmD,EAAUpD,EAAAA,GAAiC,IAAV4M,CACvE,CAxHWE,CAAUnC,EAAYvV,MACzBoJ,MAAMpJ,IACR,OAAO,IAAIoF,KAAK+D,KAGpB,IAAIoM,EAAYQ,SAKT,CACL,IAAI/P,EAAY,IAAIZ,KAAK0E,EAAY9J,GAMjCjB,EAAS,IAAIqG,KAAK,GAGtB,OAFArG,EAAOsL,YAAYrE,EAAUI,iBAAkBJ,EAAU0G,cAAe1G,EAAUiD,cAClFlK,EAAO8M,SAAS7F,EAAU8G,cAAe9G,EAAUmH,gBAAiBnH,EAAUqH,gBAAiBrH,EAAUyH,sBAClG1O,CACT,CAdE,OADA6O,EAsHJ,SAAuB+J,GACrB,GAAuB,MAAnBA,EAAwB,OAAO,EACnC,IAAItB,EAAWsB,EAAenW,MAAMoW,GACpC,IAAKvB,EAAU,OAAO,EACtB,IAAIjK,EAAuB,MAAhBiK,EAAS,IAAc,EAAI,EAClCtI,EAAQ5J,SAASkS,EAAS,IAC1BrI,EAAUqI,EAAS,IAAMlS,SAASkS,EAAS,KAAO,EACtD,IAoCF,SAA0BwB,EAAQ7J,GAChC,OAAOA,GAAW,GAAKA,GAAW,EACpC,CAtCO8J,CAAiB/J,EAAOC,GAC3B,OAAO7E,IAET,OAAOiD,GAAQ2B,EAAQlD,EAAAA,GAAqBmD,EAAUpD,EAAAA,GACxD,CAjIamN,CAAcxC,EAAYQ,UAC/B3M,MAAMwE,GACD,IAAIxI,KAAK+D,KAcb,IAAI/D,KAAK0E,EAAY9J,EAAO4N,EACrC,CACA,IAAI+H,EAAW,CACbC,kBAAmB,OACnBC,kBAAmB,QACnBE,SAAU,cAERU,EAAY,gEACZa,EAAY,4EACZM,EAAgB,gCA2EpB,SAASjB,EAAclV,GACrB,OAAOA,EAAQ0C,SAAS1C,GAAS,CACnC,CAaA,SAAS8V,EAAc9V,GACrB,OAAOA,GAASuW,WAAWvW,EAAMxC,QAAQ,IAAK,OAAS,CACzD,CAyBA,IAAIgY,EAAe,CAAC,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAClE,SAASC,EAAgB/Q,GACvB,OAAOA,EAAO,MAAQ,GAAKA,EAAO,IAAM,GAAKA,EAAO,MAAQ,CAC9D,qFChNe,SAAS8R,EAA2BC,EAAGC,GACpD,IAAIC,EAAuB,qBAAXC,QAA0BH,EAAEG,OAAOC,WAAaJ,EAAE,cAClE,IAAKE,EAAI,CACP,GAAIxb,MAAMC,QAAQqb,KAAOE,GAAK,EAAAG,EAAA,GAA2BL,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAEzb,OAAqB,CAC/G2b,IAAIF,EAAIE,GACZ,IAAI7b,EAAI,EACJic,EAAI,WAAc,EACtB,MAAO,CACLpL,EAAGoL,EACHC,EAAG,WACD,OAAIlc,GAAK2b,EAAEzb,OAAe,CACxBic,MAAM,GAED,CACLA,MAAM,EACNjX,MAAOyW,EAAE3b,KAEb,EACAmT,EAAG,SAAWiJ,GACZ,MAAMA,CACR,EACAC,EAAGJ,EAEP,CACA,MAAM,IAAI1P,UAAU,wIACtB,CACA,IAEE+P,EAFEC,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACL3L,EAAG,WACDgL,EAAKA,EAAGhb,KAAK8a,EACf,EACAO,EAAG,WACD,IAAIO,EAAOZ,EAAGa,OAEd,OADAH,EAAmBE,EAAKN,KACjBM,CACT,EACAtJ,EAAG,SAAWwJ,GACZH,GAAS,EACTF,EAAMK,CACR,EACAN,EAAG,WACD,IACOE,GAAoC,MAAhBV,EAAW,QAAWA,EAAW,QAC5D,CAAE,QACA,GAAIW,EAAQ,MAAMF,CACpB,CACF,EAEJ,mCCnDe,SAASM,EAAOC,EAAQnX,GACrC,GAAc,MAAVmX,EACF,MAAM,IAAItQ,UAAU,iEAEtB,IAAK,IAAIuQ,KAAYpX,EACflG,OAAOkB,UAAUb,eAAegB,KAAK6E,EAAQoX,KAE/CD,EAAOC,GAAYpX,EAAOoX,IAG9B,OAAOD,CACT,kHCJWE,EAAsB,WAC/B,SAASA,KACPC,EAAAA,EAAAA,GAAgBC,KAAMF,IACtBG,EAAAA,EAAAA,GAAgBD,KAAM,gBAAY,IAClCC,EAAAA,EAAAA,GAAgBD,KAAM,cAAe,EACvC,CAOA,OANAE,EAAAA,EAAAA,GAAaJ,EAAQ,CAAC,CACpBnc,IAAK,WACLsE,MAAO,SAAkBkY,EAAUhX,GACjC,OAAO,CACT,KAEK2W,CACT,CAbiC,GActBM,EAA2B,SAAUC,IAC9CC,EAAAA,EAAAA,GAAUF,EAAaC,GACvB,IAAIE,GAASC,EAAAA,EAAAA,GAAaJ,GAC1B,SAASA,EAAYnY,EAAOwY,EAAeC,EAAUC,EAAUC,GAC7D,IAAIC,EAUJ,OATAd,EAAAA,EAAAA,GAAgBC,KAAMI,IACtBS,EAAQN,EAAO3c,KAAKoc,OACd/X,MAAQA,EACd4Y,EAAMJ,cAAgBA,EACtBI,EAAMH,SAAWA,EACjBG,EAAMF,SAAWA,EACbC,IACFC,EAAMD,YAAcA,GAEfC,CACT,CAYA,OAXAX,EAAAA,EAAAA,GAAaE,EAAa,CAAC,CACzBzc,IAAK,WACLsE,MAAO,SAAkB0D,EAASrG,GAChC,OAAO0a,KAAKS,cAAc9U,EAASqU,KAAK/X,MAAO3C,EACjD,GACC,CACD3B,IAAK,MACLsE,MAAO,SAAa0D,EAASmV,EAAOxb,GAClC,OAAO0a,KAAKU,SAAS/U,EAASmV,EAAOd,KAAK/X,MAAO3C,EACnD,KAEK8a,CACT,CA5BsC,CA4BpCN,GACSiB,EAA0C,SAAUC,IAC7DV,EAAAA,EAAAA,GAAUS,EAA4BC,GACtC,IAAIC,GAAUT,EAAAA,EAAAA,GAAaO,GAC3B,SAASA,IACP,IAAIG,GACJnB,EAAAA,EAAAA,GAAgBC,KAAMe,GACtB,IAAK,IAAII,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAF,EAASD,EAAQrd,KAAKL,MAAM0d,EAAS,CAACjB,MAAM5Q,OAAOvJ,KACnDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBH,GAAS,WAtDvB,KAuDzBjB,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBH,GAAS,eAAgB,GACzDA,CACT,CAaA,OAZAhB,EAAAA,EAAAA,GAAaa,EAA4B,CAAC,CACxCpd,IAAK,MACLsE,MAAO,SAAa9B,EAAM2a,GACxB,GAAIA,EAAMQ,eACR,OAAOnb,EAET,IAAIob,EAAgB,IAAI3V,KAAK,GAG7B,OAFA2V,EAAc1Q,YAAY1K,EAAKyG,iBAAkBzG,EAAK+M,cAAe/M,EAAKsJ,cAC1E8R,EAAclP,SAASlM,EAAKmN,cAAenN,EAAKwN,gBAAiBxN,EAAK0N,gBAAiB1N,EAAK8N,sBACrFsN,CACT,KAEKR,CACT,CA3BqD,CA2BnDjB,GCzES0B,EAAsB,WAC/B,SAASA,KACPzB,EAAAA,EAAAA,GAAgBC,KAAMwB,IACtBvB,EAAAA,EAAAA,GAAgBD,KAAM,0BAAsB,IAC5CC,EAAAA,EAAAA,GAAgBD,KAAM,gBAAY,IAClCC,EAAAA,EAAAA,GAAgBD,KAAM,mBAAe,EACvC,CAmBA,OAlBAE,EAAAA,EAAAA,GAAasB,EAAQ,CAAC,CACpB7d,IAAK,MACLsE,MAAO,SAAa+T,EAAY5W,EAAO4C,EAAO1C,GAC5C,IAAIC,EAASya,KAAKyB,MAAMzF,EAAY5W,EAAO4C,EAAO1C,GAClD,OAAKC,EAGE,CACLmc,OAAQ,IAAItB,EAAY7a,EAAO0C,MAAO+X,KAAK2B,SAAU3B,KAAK4B,IAAK5B,KAAKW,SAAUX,KAAKY,aACnFhY,KAAMrD,EAAOqD,MAJN,IAMX,GACC,CACDjF,IAAK,WACLsE,MAAO,SAAkBkY,EAAU0B,EAAQ1Y,GACzC,OAAO,CACT,KAEKqY,CACT,CA1BiC,GCGtBM,EAAyB,SAAUC,IAC5CzB,EAAAA,EAAAA,GAAUwB,EAAWC,GACrB,IAAIxB,GAASC,EAAAA,EAAAA,GAAasB,GAC1B,SAASA,IACP,IAAIjB,GACJd,EAAAA,EAAAA,GAAgBC,KAAM8B,GACtB,IAAK,IAAIX,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,MAC9EA,CACT,CAwCA,OAvCAX,EAAAA,EAAAA,GAAa4B,EAAW,CAAC,CACvBne,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO4C,EAAM0B,IAAIsS,EAAY,CAC3BlW,MAAO,iBACHkC,EAAM0B,IAAIsS,EAAY,CAC1BlW,MAAO,WAGX,IAAK,QACH,OAAOkC,EAAM0B,IAAIsS,EAAY,CAC3BlW,MAAO,WAIX,QACE,OAAOkC,EAAM0B,IAAIsS,EAAY,CAC3BlW,MAAO,UACHkC,EAAM0B,IAAIsS,EAAY,CAC1BlW,MAAO,iBACHkC,EAAM0B,IAAIsS,EAAY,CAC1BlW,MAAO,WAGf,GACC,CACDnC,IAAK,MACLsE,MAAO,SAAa9B,EAAM2a,EAAO7Y,GAI/B,OAHA6Y,EAAMpX,IAAMzB,EACZ9B,EAAKkG,eAAepE,EAAO,EAAG,GAC9B9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEK2b,CACT,CAtDoC,CAsDlCN,aC7DSQ,EACF,iBADEA,EAGH,qBAHGA,EAKE,kCALFA,EAOH,qBAPGA,EASA,qBATAA,EAWA,qBAXAA,EAaA,iBAbAA,EAeA,iBAfAA,EAiBD,YAjBCA,EAmBD,YAnBCA,EAsBI,MAtBJA,EAwBE,WAxBFA,EA0BI,WA1BJA,EA4BG,WA5BHA,EA+BQ,SA/BRA,EAgCU,QAhCVA,EAkCQ,aAlCRA,EAoCU,aApCVA,EAsCS,aAGTC,EACa,2BADbA,EAEF,0BAFEA,EAGa,oCAHbA,EAIC,2BAJDA,EAKgB,sCC5CpB,SAASC,EAASC,EAAeC,GACtC,OAAKD,EAGE,CACLla,MAAOma,EAAMD,EAAcla,OAC3BW,KAAMuZ,EAAcvZ,MAJbuZ,CAMX,CACO,SAASE,EAAoB7Z,EAASwT,GAC3C,IAAIjU,EAAciU,EAAWhU,MAAMQ,GACnC,OAAKT,EAGE,CACLE,MAAO0C,SAAS5C,EAAY,GAAI,IAChCa,KAAMoT,EAAWnT,MAAMd,EAAY,GAAG9E,SAJ/B,IAMX,CACO,SAASqf,EAAqB9Z,EAASwT,GAC5C,IAAIjU,EAAciU,EAAWhU,MAAMQ,GACnC,IAAKT,EACH,OAAO,KAIT,GAAuB,MAAnBA,EAAY,GACd,MAAO,CACLE,MAAO,EACPW,KAAMoT,EAAWnT,MAAM,IAG3B,IAAI+J,EAA0B,MAAnB7K,EAAY,GAAa,GAAK,EACrCwM,EAAQxM,EAAY,GAAK4C,SAAS5C,EAAY,GAAI,IAAM,EACxDyM,EAAUzM,EAAY,GAAK4C,SAAS5C,EAAY,GAAI,IAAM,EAC1DiW,EAAUjW,EAAY,GAAK4C,SAAS5C,EAAY,GAAI,IAAM,EAC9D,MAAO,CACLE,MAAO2K,GAAQ2B,EAAQlD,EAAAA,GAAqBmD,EAAUpD,EAAAA,GAAuB4M,EAAU1M,EAAAA,IACvF1I,KAAMoT,EAAWnT,MAAMd,EAAY,GAAG9E,QAE1C,CACO,SAASsf,GAAqBvG,GACnC,OAAOqG,EAAoBL,EAAiChG,EAC9D,CACO,SAASwG,GAAavD,EAAGjD,GAC9B,OAAQiD,GACN,KAAK,EACH,OAAOoD,EAAoBL,EAA6BhG,GAC1D,KAAK,EACH,OAAOqG,EAAoBL,EAA2BhG,GACxD,KAAK,EACH,OAAOqG,EAAoBL,EAA6BhG,GAC1D,KAAK,EACH,OAAOqG,EAAoBL,EAA4BhG,GACzD,QACE,OAAOqG,EAAoB,IAAIzF,OAAO,UAAYqC,EAAI,KAAMjD,GAElE,CACO,SAASyG,GAAmBxD,EAAGjD,GACpC,OAAQiD,GACN,KAAK,EACH,OAAOoD,EAAoBL,EAAmChG,GAChE,KAAK,EACH,OAAOqG,EAAoBL,EAAiChG,GAC9D,KAAK,EACH,OAAOqG,EAAoBL,EAAmChG,GAChE,KAAK,EACH,OAAOqG,EAAoBL,EAAkChG,GAC/D,QACE,OAAOqG,EAAoB,IAAIzF,OAAO,YAAcqC,EAAI,KAAMjD,GAEpE,CACO,SAAS0G,GAAqBzY,GACnC,OAAQA,GACN,IAAK,UACH,OAAO,EACT,IAAK,UACH,OAAO,GACT,IAAK,KACL,IAAK,OACL,IAAK,YACH,OAAO,GAIT,QACE,OAAO,EAEb,CACO,SAAS0Y,GAAsBC,EAAcC,GAClD,IAMItd,EANAud,EAAcD,EAAc,EAK5BE,EAAiBD,EAAcD,EAAc,EAAIA,EAErD,GAAIE,GAAkB,GACpBxd,EAASqd,GAAgB,QACpB,CACL,IAAII,EAAWD,EAAiB,GAGhCxd,EAASqd,EAF0C,IAA7BpV,KAAKsC,MAAMkT,EAAW,MACpBJ,GAAgBI,EAAW,IACY,IAAM,EACvE,CACA,OAAOF,EAAcvd,EAAS,EAAIA,CACpC,CACO,SAASmY,GAAgB/Q,GAC9B,OAAOA,EAAO,MAAQ,GAAKA,EAAO,IAAM,GAAKA,EAAO,MAAQ,CAC9D,CC/FO,IAAIsW,GAA0B,SAAUlB,IAC7CzB,EAAAA,EAAAA,GAAU2C,EAAYlB,GACtB,IAAIxB,GAASC,EAAAA,EAAAA,GAAayC,GAC1B,SAASA,IACP,IAAIpC,GACJd,EAAAA,EAAAA,GAAgBC,KAAMiD,GACtB,IAAK,IAAI9B,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC5GA,CACT,CA0CA,OAzCAX,EAAAA,EAAAA,GAAa+C,EAAY,CAAC,CACxBtf,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,IAAIW,EAAgB,SAAuBgE,GACzC,MAAO,CACLA,KAAMA,EACNuW,eAA0B,OAAV9d,EAEpB,EACA,OAAQA,GACN,IAAK,IACH,OAAO8c,EAASM,GAAa,EAAGxG,GAAarT,GAC/C,IAAK,KACH,OAAOuZ,EAASla,EAAMqB,cAAc2S,EAAY,CAC9CnH,KAAM,SACJlM,GACN,QACE,OAAOuZ,EAASM,GAAapd,EAAMnC,OAAQ+Y,GAAarT,GAE9D,GACC,CACDhF,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,EAAMib,gBAAkBjb,EAAM0E,KAAO,CAC9C,GACC,CACDhJ,IAAK,MACLsE,MAAO,SAAa9B,EAAM2a,EAAO7Y,GAC/B,IAAI4a,EAAc1c,EAAKyG,iBACvB,GAAI3E,EAAMib,eAAgB,CACxB,IAAIC,EAAyBR,GAAsB1a,EAAM0E,KAAMkW,GAG/D,OAFA1c,EAAKkG,eAAe8W,EAAwB,EAAG,GAC/Chd,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,CACA,IAAIwG,EAAS,QAASmU,GAAwB,IAAdA,EAAMpX,IAAyB,EAAIzB,EAAM0E,KAAvB1E,EAAM0E,KAGxD,OAFAxG,EAAKkG,eAAeM,EAAM,EAAG,GAC7BxG,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEK8c,CACT,CAxDqC,CAwDnCzB,yBC7DS4B,GAAmC,SAAUrB,IACtDzB,EAAAA,EAAAA,GAAU8C,EAAqBrB,GAC/B,IAAIxB,GAASC,EAAAA,EAAAA,GAAa4C,GAC1B,SAASA,IACP,IAAIvC,GACJd,EAAAA,EAAAA,GAAgBC,KAAMoD,GACtB,IAAK,IAAIjC,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA0CA,OAzCAX,EAAAA,EAAAA,GAAakD,EAAqB,CAAC,CACjCzf,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,IAAIW,EAAgB,SAAuBgE,GACzC,MAAO,CACLA,KAAMA,EACNuW,eAA0B,OAAV9d,EAEpB,EACA,OAAQA,GACN,IAAK,IACH,OAAO8c,EAASM,GAAa,EAAGxG,GAAarT,GAC/C,IAAK,KACH,OAAOuZ,EAASla,EAAMqB,cAAc2S,EAAY,CAC9CnH,KAAM,SACJlM,GACN,QACE,OAAOuZ,EAASM,GAAapd,EAAMnC,OAAQ+Y,GAAarT,GAE9D,GACC,CACDhF,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,EAAMib,gBAAkBjb,EAAM0E,KAAO,CAC9C,GACC,CACDhJ,IAAK,MACLsE,MAAO,SAAa9B,EAAM2a,EAAO7Y,EAAO3C,GACtC,IAAIud,GAAcnV,EAAAA,GAAAA,GAAevH,EAAMb,GACvC,GAAI2C,EAAMib,eAAgB,CACxB,IAAIC,EAAyBR,GAAsB1a,EAAM0E,KAAMkW,GAG/D,OAFA1c,EAAKkG,eAAe8W,EAAwB,EAAG7d,EAAQ0F,uBACvD7E,EAAK2G,YAAY,EAAG,EAAG,EAAG,IACnByB,EAAAA,GAAAA,GAAepI,EAAMb,EAC9B,CACA,IAAIqH,EAAS,QAASmU,GAAwB,IAAdA,EAAMpX,IAAyB,EAAIzB,EAAM0E,KAAvB1E,EAAM0E,KAGxD,OAFAxG,EAAKkG,eAAeM,EAAM,EAAGrH,EAAQ0F,uBACrC7E,EAAK2G,YAAY,EAAG,EAAG,EAAG,IACnByB,EAAAA,GAAAA,GAAepI,EAAMb,EAC9B,KAEK8d,CACT,CAxD8C,CAwD5C5B,cC1DS6B,GAAiC,SAAUtB,IACpDzB,EAAAA,EAAAA,GAAU+C,EAAmBtB,GAC7B,IAAIxB,GAASC,EAAAA,EAAAA,GAAa6C,GAC1B,SAASA,IACP,IAAIxC,GACJd,EAAAA,EAAAA,GAAgBC,KAAMqD,GACtB,IAAK,IAAIlC,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAkBA,OAjBAX,EAAAA,EAAAA,GAAamD,EAAmB,CAAC,CAC/B1f,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,GAChC,OACSqd,GADK,MAAVrd,EACwB,EAEFA,EAAMnC,OAFD+Y,EAGjC,GACC,CACDrY,IAAK,MACLsE,MAAO,SAAagB,EAAOqa,EAAQrb,GACjC,IAAIsb,EAAkB,IAAI3X,KAAK,GAG/B,OAFA2X,EAAgBlX,eAAepE,EAAO,EAAG,GACzCsb,EAAgBzW,YAAY,EAAG,EAAG,EAAG,IAC9BE,EAAAA,GAAAA,GAAkBuW,EAC3B,KAEKF,CACT,CAhC4C,CAgC1C7B,GCjCSgC,GAAkC,SAAUzB,IACrDzB,EAAAA,EAAAA,GAAUkD,EAAoBzB,GAC9B,IAAIxB,GAASC,EAAAA,EAAAA,GAAagD,GAC1B,SAASA,IACP,IAAI3C,GACJd,EAAAA,EAAAA,GAAgBC,KAAMwD,GACtB,IAAK,IAAIrC,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACjHA,CACT,CAiBA,OAhBAX,EAAAA,EAAAA,GAAasD,EAAoB,CAAC,CAChC7f,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,GAChC,OACSqd,GADK,MAAVrd,EACwB,EAEFA,EAAMnC,OAFD+Y,EAGjC,GACC,CACDrY,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAGhC,OAFA9B,EAAKkG,eAAepE,EAAO,EAAG,GAC9B9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEKqd,CACT,CA/B6C,CA+B3ChC,GC/BSiC,GAA6B,SAAU1B,IAChDzB,EAAAA,EAAAA,GAAUmD,EAAe1B,GACzB,IAAIxB,GAASC,EAAAA,EAAAA,GAAaiD,GAC1B,SAASA,IACP,IAAI5C,GACJd,EAAAA,EAAAA,GAAgBC,KAAMyD,GACtB,IAAK,IAAItC,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA0DA,OAzDAX,EAAAA,EAAAA,GAAauD,EAAe,CAAC,CAC3B9f,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GAEN,IAAK,IACL,IAAK,KAEH,OAAOod,GAAapd,EAAMnC,OAAQ+Y,GAEpC,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,YAGV,IAAK,MACH,OAAO7M,EAAM8B,QAAQkS,EAAY,CAC/BlW,MAAO,cACPqB,QAAS,gBACLa,EAAM8B,QAAQkS,EAAY,CAC9BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,QACH,OAAOa,EAAM8B,QAAQkS,EAAY,CAC/BlW,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOa,EAAM8B,QAAQkS,EAAY,CAC/BlW,MAAO,OACPqB,QAAS,gBACLa,EAAM8B,QAAQkS,EAAY,CAC9BlW,MAAO,cACPqB,QAAS,gBACLa,EAAM8B,QAAQkS,EAAY,CAC9BlW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAGhC,OAFA9B,EAAK0P,YAA0B,GAAb5N,EAAQ,GAAQ,GAClC9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEKsd,CACT,CAxEwC,CAwEtCjC,GCxESkC,GAAuC,SAAU3B,IAC1DzB,EAAAA,EAAAA,GAAUoD,EAAyB3B,GACnC,IAAIxB,GAASC,EAAAA,EAAAA,GAAakD,GAC1B,SAASA,IACP,IAAI7C,GACJd,EAAAA,EAAAA,GAAgBC,KAAM0D,GACtB,IAAK,IAAIvC,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA0DA,OAzDAX,EAAAA,EAAAA,GAAawD,EAAyB,CAAC,CACrC/f,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GAEN,IAAK,IACL,IAAK,KAEH,OAAOod,GAAapd,EAAMnC,OAAQ+Y,GAEpC,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,YAGV,IAAK,MACH,OAAO7M,EAAM8B,QAAQkS,EAAY,CAC/BlW,MAAO,cACPqB,QAAS,gBACLa,EAAM8B,QAAQkS,EAAY,CAC9BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,QACH,OAAOa,EAAM8B,QAAQkS,EAAY,CAC/BlW,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOa,EAAM8B,QAAQkS,EAAY,CAC/BlW,MAAO,OACPqB,QAAS,gBACLa,EAAM8B,QAAQkS,EAAY,CAC9BlW,MAAO,cACPqB,QAAS,gBACLa,EAAM8B,QAAQkS,EAAY,CAC9BlW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAGhC,OAFA9B,EAAK0P,YAA0B,GAAb5N,EAAQ,GAAQ,GAClC9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEKud,CACT,CAxEkD,CAwEhDlC,GCvESmC,GAA2B,SAAU5B,IAC9CzB,EAAAA,EAAAA,GAAUqD,EAAa5B,GACvB,IAAIxB,GAASC,EAAAA,EAAAA,GAAamD,GAC1B,SAASA,IACP,IAAI9C,GACJd,EAAAA,EAAAA,GAAgBC,KAAM2D,GACtB,IAAK,IAAIxC,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAClIZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KACpDA,CACT,CA8DA,OA7DAX,EAAAA,EAAAA,GAAayD,EAAa,CAAC,CACzBhgB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,IAAIW,EAAgB,SAAuBV,GACzC,OAAOA,EAAQ,CACjB,EACA,OAAQ7C,GAEN,IAAK,IACH,OAAO8c,EAASG,EAAoBL,EAAuBhG,GAAarT,GAE1E,IAAK,KACH,OAAOuZ,EAASM,GAAa,EAAGxG,GAAarT,GAE/C,IAAK,KACH,OAAOuZ,EAASla,EAAMqB,cAAc2S,EAAY,CAC9CnH,KAAM,UACJlM,GAEN,IAAK,MACH,OAAOX,EAAM+B,MAAMiS,EAAY,CAC7BlW,MAAO,cACPqB,QAAS,gBACLa,EAAM+B,MAAMiS,EAAY,CAC5BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,QACH,OAAOa,EAAM+B,MAAMiS,EAAY,CAC7BlW,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOa,EAAM+B,MAAMiS,EAAY,CAC7BlW,MAAO,OACPqB,QAAS,gBACLa,EAAM+B,MAAMiS,EAAY,CAC5BlW,MAAO,cACPqB,QAAS,gBACLa,EAAM+B,MAAMiS,EAAY,CAC5BlW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAGhC,OAFA9B,EAAK0P,YAAY5N,EAAO,GACxB9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEKwd,CACT,CA5EsC,CA4EpCnC,GC5ESoC,GAAqC,SAAU7B,IACxDzB,EAAAA,EAAAA,GAAUsD,EAAuB7B,GACjC,IAAIxB,GAASC,EAAAA,EAAAA,GAAaoD,GAC1B,SAASA,IACP,IAAI/C,GACJd,EAAAA,EAAAA,GAAgBC,KAAM4D,GACtB,IAAK,IAAIzC,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA8DA,OA7DAX,EAAAA,EAAAA,GAAa0D,EAAuB,CAAC,CACnCjgB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,IAAIW,EAAgB,SAAuBV,GACzC,OAAOA,EAAQ,CACjB,EACA,OAAQ7C,GAEN,IAAK,IACH,OAAO8c,EAASG,EAAoBL,EAAuBhG,GAAarT,GAE1E,IAAK,KACH,OAAOuZ,EAASM,GAAa,EAAGxG,GAAarT,GAE/C,IAAK,KACH,OAAOuZ,EAASla,EAAMqB,cAAc2S,EAAY,CAC9CnH,KAAM,UACJlM,GAEN,IAAK,MACH,OAAOX,EAAM+B,MAAMiS,EAAY,CAC7BlW,MAAO,cACPqB,QAAS,gBACLa,EAAM+B,MAAMiS,EAAY,CAC5BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,QACH,OAAOa,EAAM+B,MAAMiS,EAAY,CAC7BlW,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOa,EAAM+B,MAAMiS,EAAY,CAC7BlW,MAAO,OACPqB,QAAS,gBACLa,EAAM+B,MAAMiS,EAAY,CAC5BlW,MAAO,cACPqB,QAAS,gBACLa,EAAM+B,MAAMiS,EAAY,CAC5BlW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAGhC,OAFA9B,EAAK0P,YAAY5N,EAAO,GACxB9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEKyd,CACT,CA5EgD,CA4E9CpC,cC1EK,IAAIqC,GAA+B,SAAU9B,IAClDzB,EAAAA,EAAAA,GAAUuD,EAAiB9B,GAC3B,IAAIxB,GAASC,EAAAA,EAAAA,GAAaqD,GAC1B,SAASA,IACP,IAAIhD,GACJd,EAAAA,EAAAA,GAAgBC,KAAM6D,GACtB,IAAK,IAAI1C,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA0BA,OAzBAX,EAAAA,EAAAA,GAAa2D,EAAiB,CAAC,CAC7BlgB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACH,OAAOid,EAAoBL,EAAsBhG,GACnD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,SAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,EAAO3C,GACvC,OAAOiJ,EAAAA,GAAAA,GC3CE,SAAoB/B,EAAWsX,EAAWxe,IACvDmH,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdgJ,GAAOrH,EAAAA,EAAAA,GAAU2V,GACjBzW,GAAOoB,EAAAA,GAAAA,GAAWtI,EAAMb,GAAWkQ,EAEvC,OADArP,EAAKqJ,WAAWrJ,EAAKsJ,aAAsB,EAAPpC,GAC7BlH,CACT,CDoC4B4d,CAAW5d,EAAM8B,EAAO3C,GAAUA,EAC1D,KAEKue,CACT,CAxC0C,CAwCxCrC,cExCK,IAAIwC,GAA6B,SAAUjC,IAChDzB,EAAAA,EAAAA,GAAU0D,EAAejC,GACzB,IAAIxB,GAASC,EAAAA,EAAAA,GAAawD,GAC1B,SAASA,IACP,IAAInD,GACJd,EAAAA,EAAAA,GAAgBC,KAAMgE,GACtB,IAAK,IAAI7C,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,MAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA0BA,OAzBAX,EAAAA,EAAAA,GAAa8D,EAAe,CAAC,CAC3BrgB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACH,OAAOid,EAAoBL,EAAsBhG,GACnD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,SAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAChC,OAAO+E,EAAAA,GAAAA,GC3CE,SAAuBR,EAAWyX,IAC/CxX,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdkJ,GAAUvH,EAAAA,EAAAA,GAAU8V,GACpB5W,GAAOD,EAAAA,GAAAA,GAAcjH,GAAQuP,EAEjC,OADAvP,EAAKqJ,WAAWrJ,EAAKsJ,aAAsB,EAAPpC,GAC7BlH,CACT,CDoC+B+d,CAAc/d,EAAM8B,GAC/C,KAEK+b,CACT,CAxCwC,CAwCtCxC,GE1CE2C,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC7DC,GAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhEC,GAA0B,SAAUtC,IAC7CzB,EAAAA,EAAAA,GAAU+D,EAAYtC,GACtB,IAAIxB,GAASC,EAAAA,EAAAA,GAAa6D,GAC1B,SAASA,IACP,IAAIxD,GACJd,EAAAA,EAAAA,GAAgBC,KAAMqE,GACtB,IAAK,IAAIlD,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAMzB,OAJAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,cAAe,IAC9DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACtHA,CACT,CAmCA,OAlCAX,EAAAA,EAAAA,GAAamE,EAAY,CAAC,CACxB1gB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACH,OAAOid,EAAoBL,EAAsBhG,GACnD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,SAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkB9B,EAAM8B,GAC7B,IACIqc,EAAa5G,GADNvX,EAAKyG,kBAEZ7C,EAAQ5D,EAAK+M,cACjB,OAAIoR,EACKrc,GAAS,GAAKA,GAASmc,GAAwBra,GAE/C9B,GAAS,GAAKA,GAASkc,GAAcpa,EAEhD,GACC,CACDpG,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAGhC,OAFA9B,EAAKqJ,WAAWvH,GAChB9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEKke,CACT,CAlDqC,CAkDnC7C,GCtDS+C,GAA+B,SAAUxC,IAClDzB,EAAAA,EAAAA,GAAUiE,EAAiBxC,GAC3B,IAAIxB,GAASC,EAAAA,EAAAA,GAAa+D,GAC1B,SAASA,IACP,IAAI1D,GACJd,EAAAA,EAAAA,GAAgBC,KAAMuE,GACtB,IAAK,IAAIpD,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAMzB,OAJAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,cAAe,IAC9DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAmCA,OAlCAX,EAAAA,EAAAA,GAAaqE,EAAiB,CAAC,CAC7B5gB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACL,IAAK,KACH,OAAOid,EAAoBL,EAA2BhG,GACxD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,SAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkB9B,EAAM8B,GAG7B,OADiByV,GADNvX,EAAKyG,kBAGP3E,GAAS,GAAKA,GAAS,IAEvBA,GAAS,GAAKA,GAAS,GAElC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAGhC,OAFA9B,EAAK0P,YAAY,EAAG5N,GACpB9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEKoe,CACT,CAlD0C,CAkDxC/C,cCvDa,SAASgD,GAAUhY,EAAWiY,EAAUnf,GACrD,IAAIqI,EAAMC,EAAOC,EAAO6B,EAAuB3B,EAAiBC,EAAuBC,EAAuBC,GAC9GzB,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiI,GAAiBC,EAAAA,GAAAA,KACjBH,GAAeoD,EAAAA,EAAAA,GAA+0B,QAAp0BR,EAA8hB,QAAthBC,EAAkd,QAAzcC,EAA6G,QAApG6B,EAAoC,OAAZpK,QAAgC,IAAZA,OAAqB,EAASA,EAAQyF,oBAAoD,IAA1B2E,EAAmCA,EAAoC,OAAZpK,QAAgC,IAAZA,GAAqE,QAAtCyI,EAAkBzI,EAAQ8I,cAAwC,IAApBL,GAA4F,QAArDC,EAAwBD,EAAgBzI,eAA+C,IAA1B0I,OAA5J,EAAwMA,EAAsBjD,oBAAoC,IAAV8C,EAAmBA,EAAQ5C,EAAeF,oBAAoC,IAAV6C,EAAmBA,EAA4D,QAAnDK,EAAwBhD,EAAemD,cAA8C,IAA1BH,GAAyG,QAA5DC,EAAyBD,EAAsB3I,eAAgD,IAA3B4I,OAA9E,EAA2HA,EAAuBnD,oBAAmC,IAAT4C,EAAkBA,EAAO,GAGn4B,KAAM5C,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIsD,WAAW,oDAEvB,IAAIlI,GAAOuG,EAAAA,EAAAA,SAAOF,GACdxC,GAAMmE,EAAAA,EAAAA,GAAUsW,GAIhBpX,IAFYrD,EAAM,EACM,GAAK,EACVe,EAAe,EAAI,GAAKf,EAH9B7D,EAAKoJ,YAKtB,OADApJ,EAAKqJ,WAAWrJ,EAAKsJ,aAAepC,GAC7BlH,CACT,CCdO,IAAIue,GAAyB,SAAU3C,IAC5CzB,EAAAA,EAAAA,GAAUoE,EAAW3C,GACrB,IAAIxB,GAASC,EAAAA,EAAAA,GAAakE,GAC1B,SAASA,IACP,IAAI7D,GACJd,EAAAA,EAAAA,GAAgBC,KAAM0E,GACtB,IAAK,IAAIvD,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAiEA,OAhEAX,EAAAA,EAAAA,GAAawE,EAAW,CAAC,CACvB/gB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO4C,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,cACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,QACH,OAAOa,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,SACH,OAAOa,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOa,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,OACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,cACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,EAAO3C,GAGvC,OAFAa,EAAOqe,GAAUre,EAAM8B,EAAO3C,IACzBwH,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEKue,CACT,CA/EoC,CA+ElClD,GC9ESmD,GAA8B,SAAU5C,IACjDzB,EAAAA,EAAAA,GAAUqE,EAAgB5C,GAC1B,IAAIxB,GAASC,EAAAA,EAAAA,GAAamE,GAC1B,SAASA,IACP,IAAI9D,GACJd,EAAAA,EAAAA,GAAgBC,KAAM2E,GACtB,IAAK,IAAIxD,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CA6EA,OA5EAX,EAAAA,EAAAA,GAAayE,EAAgB,CAAC,CAC5BhhB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,EAAO1C,GAC9C,IAAIqD,EAAgB,SAAuBV,GACzC,IAAI2c,EAA8C,EAA9BpX,KAAKsC,OAAO7H,EAAQ,GAAK,GAC7C,OAAQA,EAAQ3C,EAAQyF,aAAe,GAAK,EAAI6Z,CAClD,EACA,OAAQxf,GAEN,IAAK,IACL,IAAK,KAEH,OAAO8c,EAASM,GAAapd,EAAMnC,OAAQ+Y,GAAarT,GAE1D,IAAK,KACH,OAAOuZ,EAASla,EAAMqB,cAAc2S,EAAY,CAC9CnH,KAAM,QACJlM,GAEN,IAAK,MACH,OAAOX,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,cACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,QACH,OAAOa,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,SACH,OAAOa,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOa,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,OACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,cACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,EAAO3C,GAGvC,OAFAa,EAAOqe,GAAUre,EAAM8B,EAAO3C,IACzBwH,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEKwe,CACT,CA3FyC,CA2FvCnD,GC3FSqD,GAAwC,SAAU9C,IAC3DzB,EAAAA,EAAAA,GAAUuE,EAA0B9C,GACpC,IAAIxB,GAASC,EAAAA,EAAAA,GAAaqE,GAC1B,SAASA,IACP,IAAIhE,GACJd,EAAAA,EAAAA,GAAgBC,KAAM6E,GACtB,IAAK,IAAI1D,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CA6EA,OA5EAX,EAAAA,EAAAA,GAAa2E,EAA0B,CAAC,CACtClhB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,EAAO1C,GAC9C,IAAIqD,EAAgB,SAAuBV,GACzC,IAAI2c,EAA8C,EAA9BpX,KAAKsC,OAAO7H,EAAQ,GAAK,GAC7C,OAAQA,EAAQ3C,EAAQyF,aAAe,GAAK,EAAI6Z,CAClD,EACA,OAAQxf,GAEN,IAAK,IACL,IAAK,KAEH,OAAO8c,EAASM,GAAapd,EAAMnC,OAAQ+Y,GAAarT,GAE1D,IAAK,KACH,OAAOuZ,EAASla,EAAMqB,cAAc2S,EAAY,CAC9CnH,KAAM,QACJlM,GAEN,IAAK,MACH,OAAOX,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,cACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,QACH,OAAOa,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,SACPqB,QAAS,eAGb,IAAK,SACH,OAAOa,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eAIb,QACE,OAAOa,EAAMgC,IAAIgS,EAAY,CAC3BlW,MAAO,OACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,cACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,EAAO3C,GAGvC,OAFAa,EAAOqe,GAAUre,EAAM8B,EAAO3C,IACzBwH,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEK0e,CACT,CA3FmD,CA2FjDrD,GC3FK,IAAIsD,GAA4B,SAAU/C,IAC/CzB,EAAAA,EAAAA,GAAUwE,EAAc/C,GACxB,IAAIxB,GAASC,EAAAA,EAAAA,GAAasE,GAC1B,SAASA,IACP,IAAIjE,GACJd,EAAAA,EAAAA,GAAgBC,KAAM8E,GACtB,IAAK,IAAI3D,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CA+EA,OA9EAX,EAAAA,EAAAA,GAAa4E,EAAc,CAAC,CAC1BnhB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,IAAIW,EAAgB,SAAuBV,GACzC,OAAc,IAAVA,EACK,EAEFA,CACT,EACA,OAAQ7C,GAEN,IAAK,IACL,IAAK,KAEH,OAAOod,GAAapd,EAAMnC,OAAQ+Y,GAEpC,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,QAGV,IAAK,MACH,OAAOqN,EAASla,EAAMgC,IAAIgS,EAAY,CACpClW,MAAO,cACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eACPwB,GAEN,IAAK,QACH,OAAOuZ,EAASla,EAAMgC,IAAIgS,EAAY,CACpClW,MAAO,SACPqB,QAAS,eACPwB,GAEN,IAAK,SACH,OAAOuZ,EAASla,EAAMgC,IAAIgS,EAAY,CACpClW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eACPwB,GAGN,QACE,OAAOuZ,EAASla,EAAMgC,IAAIgS,EAAY,CACpClW,MAAO,OACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,cACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,QACPqB,QAAS,gBACLa,EAAMgC,IAAIgS,EAAY,CAC1BlW,MAAO,SACPqB,QAAS,eACPwB,GAEV,GACC,CACDhF,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAGhC,OAFA9B,EC7FS,SAAsBqG,EAAWiY,IAC9ChY,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIgH,GAAMmE,EAAAA,EAAAA,GAAUsW,GAChBza,EAAM,IAAM,IACdA,GAAY,GAEd,IACI7D,GAAOuG,EAAAA,EAAAA,SAAOF,GAIda,IAFYrD,EAAM,EACM,GAAK,EAJd,EAKmB,EAAI,GAAKA,EAH9B7D,EAAKoJ,YAKtB,OADApJ,EAAKqJ,WAAWrJ,EAAKsJ,aAAepC,GAC7BlH,CACT,CD+Ea4e,CAAa5e,EAAM8B,GAC1B9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GACnB3G,CACT,KAEK2e,CACT,CA7FuC,CA6FrCtD,GE9FSwD,GAA0B,SAAUjD,IAC7CzB,EAAAA,EAAAA,GAAU0E,EAAYjD,GACtB,IAAIxB,GAASC,EAAAA,EAAAA,GAAawE,GAC1B,SAASA,IACP,IAAInE,GACJd,EAAAA,EAAAA,GAAgBC,KAAMgF,GACtB,IAAK,IAAI7D,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAyCA,OAxCAX,EAAAA,EAAAA,GAAa8E,EAAY,CAAC,CACxBrhB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO4C,EAAMiC,UAAU+R,EAAY,CACjClW,MAAO,cACPqB,QAAS,gBACLa,EAAMiC,UAAU+R,EAAY,CAChClW,MAAO,SACPqB,QAAS,eAEb,IAAK,QACH,OAAOa,EAAMiC,UAAU+R,EAAY,CACjClW,MAAO,SACPqB,QAAS,eAGb,QACE,OAAOa,EAAMiC,UAAU+R,EAAY,CACjClW,MAAO,OACPqB,QAAS,gBACLa,EAAMiC,UAAU+R,EAAY,CAChClW,MAAO,cACPqB,QAAS,gBACLa,EAAMiC,UAAU+R,EAAY,CAChClW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAEhC,OADA9B,EAAK2G,YAAY4V,GAAqBza,GAAQ,EAAG,EAAG,GAC7C9B,CACT,KAEK6e,CACT,CAvDqC,CAuDnCxD,GCvDSyD,GAAkC,SAAUlD,IACrDzB,EAAAA,EAAAA,GAAU2E,EAAoBlD,GAC9B,IAAIxB,GAASC,EAAAA,EAAAA,GAAayE,GAC1B,SAASA,IACP,IAAIpE,GACJd,EAAAA,EAAAA,GAAgBC,KAAMiF,GACtB,IAAK,IAAI9D,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAyCA,OAxCAX,EAAAA,EAAAA,GAAa+E,EAAoB,CAAC,CAChCthB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO4C,EAAMiC,UAAU+R,EAAY,CACjClW,MAAO,cACPqB,QAAS,gBACLa,EAAMiC,UAAU+R,EAAY,CAChClW,MAAO,SACPqB,QAAS,eAEb,IAAK,QACH,OAAOa,EAAMiC,UAAU+R,EAAY,CACjClW,MAAO,SACPqB,QAAS,eAGb,QACE,OAAOa,EAAMiC,UAAU+R,EAAY,CACjClW,MAAO,OACPqB,QAAS,gBACLa,EAAMiC,UAAU+R,EAAY,CAChClW,MAAO,cACPqB,QAAS,gBACLa,EAAMiC,UAAU+R,EAAY,CAChClW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAEhC,OADA9B,EAAK2G,YAAY4V,GAAqBza,GAAQ,EAAG,EAAG,GAC7C9B,CACT,KAEK8e,CACT,CAvD6C,CAuD3CzD,GCvDS0D,GAA+B,SAAUnD,IAClDzB,EAAAA,EAAAA,GAAU4E,EAAiBnD,GAC3B,IAAIxB,GAASC,EAAAA,EAAAA,GAAa0E,GAC1B,SAASA,IACP,IAAIrE,GACJd,EAAAA,EAAAA,GAAgBC,KAAMkF,GACtB,IAAK,IAAI/D,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,MAC9EA,CACT,CAyCA,OAxCAX,EAAAA,EAAAA,GAAagF,EAAiB,CAAC,CAC7BvhB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO4C,EAAMiC,UAAU+R,EAAY,CACjClW,MAAO,cACPqB,QAAS,gBACLa,EAAMiC,UAAU+R,EAAY,CAChClW,MAAO,SACPqB,QAAS,eAEb,IAAK,QACH,OAAOa,EAAMiC,UAAU+R,EAAY,CACjClW,MAAO,SACPqB,QAAS,eAGb,QACE,OAAOa,EAAMiC,UAAU+R,EAAY,CACjClW,MAAO,OACPqB,QAAS,gBACLa,EAAMiC,UAAU+R,EAAY,CAChClW,MAAO,cACPqB,QAAS,gBACLa,EAAMiC,UAAU+R,EAAY,CAChClW,MAAO,SACPqB,QAAS,eAGjB,GACC,CACDxD,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAEhC,OADA9B,EAAK2G,YAAY4V,GAAqBza,GAAQ,EAAG,EAAG,GAC7C9B,CACT,KAEK+e,CACT,CAvD0C,CAuDxC1D,GCtDS2D,GAA+B,SAAUpD,IAClDzB,EAAAA,EAAAA,GAAU6E,EAAiBpD,GAC3B,IAAIxB,GAASC,EAAAA,EAAAA,GAAa2E,GAC1B,SAASA,IACP,IAAItE,GACJd,EAAAA,EAAAA,GAAgBC,KAAMmF,GACtB,IAAK,IAAIhE,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,MACnFA,CACT,CAkCA,OAjCAX,EAAAA,EAAAA,GAAaiF,EAAiB,CAAC,CAC7BxhB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACH,OAAOid,EAAoBL,EAAyBhG,GACtD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,SAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAChC,IAAImd,EAAOjf,EAAKmN,eAAiB,GAQjC,OAPI8R,GAAQnd,EAAQ,GAClB9B,EAAK2G,YAAY7E,EAAQ,GAAI,EAAG,EAAG,GACzBmd,GAAkB,KAAVnd,EAGlB9B,EAAK2G,YAAY7E,EAAO,EAAG,EAAG,GAF9B9B,EAAK2G,YAAY,EAAG,EAAG,EAAG,GAIrB3G,CACT,KAEKgf,CACT,CAhD0C,CAgDxC3D,GChDS6D,GAA+B,SAAUtD,IAClDzB,EAAAA,EAAAA,GAAU+E,EAAiBtD,GAC3B,IAAIxB,GAASC,EAAAA,EAAAA,GAAa6E,GAC1B,SAASA,IACP,IAAIxE,GACJd,EAAAA,EAAAA,GAAgBC,KAAMqF,GACtB,IAAK,IAAIlE,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC7FA,CACT,CA2BA,OA1BAX,EAAAA,EAAAA,GAAamF,EAAiB,CAAC,CAC7B1hB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACH,OAAOid,EAAoBL,EAAyBhG,GACtD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,SAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAEhC,OADA9B,EAAK2G,YAAY7E,EAAO,EAAG,EAAG,GACvB9B,CACT,KAEKkf,CACT,CAzC0C,CAyCxC7D,GCzCS8D,GAA+B,SAAUvD,IAClDzB,EAAAA,EAAAA,GAAUgF,EAAiBvD,GAC3B,IAAIxB,GAASC,EAAAA,EAAAA,GAAa8E,GAC1B,SAASA,IACP,IAAIzE,GACJd,EAAAA,EAAAA,GAAgBC,KAAMsF,GACtB,IAAK,IAAInE,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,MACnFA,CACT,CAgCA,OA/BAX,EAAAA,EAAAA,GAAaoF,EAAiB,CAAC,CAC7B3hB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACH,OAAOid,EAAoBL,EAAyBhG,GACtD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,SAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAOhC,OANW9B,EAAKmN,eAAiB,IACrBrL,EAAQ,GAClB9B,EAAK2G,YAAY7E,EAAQ,GAAI,EAAG,EAAG,GAEnC9B,EAAK2G,YAAY7E,EAAO,EAAG,EAAG,GAEzB9B,CACT,KAEKmf,CACT,CA9C0C,CA8CxC9D,GC9CS+D,GAA+B,SAAUxD,IAClDzB,EAAAA,EAAAA,GAAUiF,EAAiBxD,GAC3B,IAAIxB,GAASC,EAAAA,EAAAA,GAAa+E,GAC1B,SAASA,IACP,IAAI1E,GACJd,EAAAA,EAAAA,GAAgBC,KAAMuF,GACtB,IAAK,IAAIpE,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC7FA,CACT,CA4BA,OA3BAX,EAAAA,EAAAA,GAAaqF,EAAiB,CAAC,CAC7B5hB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACH,OAAOid,EAAoBL,EAAyBhG,GACtD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,SAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAChC,IAAIsM,EAAQtM,GAAS,GAAKA,EAAQ,GAAKA,EAEvC,OADA9B,EAAK2G,YAAYyH,EAAO,EAAG,EAAG,GACvBpO,CACT,KAEKof,CACT,CA1C0C,CA0CxC/D,GC1CSgE,GAA4B,SAAUzD,IAC/CzB,EAAAA,EAAAA,GAAUkF,EAAczD,GACxB,IAAIxB,GAASC,EAAAA,EAAAA,GAAagF,GAC1B,SAASA,IACP,IAAI3E,GACJd,EAAAA,EAAAA,GAAgBC,KAAMwF,GACtB,IAAK,IAAIrE,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CA2BA,OA1BAX,EAAAA,EAAAA,GAAasF,EAAc,CAAC,CAC1B7hB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACH,OAAOid,EAAoBL,EAAwBhG,GACrD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,WAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAEhC,OADA9B,EAAKsf,cAAcxd,EAAO,EAAG,GACtB9B,CACT,KAEKqf,CACT,CAzCuC,CAyCrChE,GCzCSkE,GAA4B,SAAU3D,IAC/CzB,EAAAA,EAAAA,GAAUoF,EAAc3D,GACxB,IAAIxB,GAASC,EAAAA,EAAAA,GAAakF,GAC1B,SAASA,IACP,IAAI7E,GACJd,EAAAA,EAAAA,GAAgBC,KAAM0F,GACtB,IAAK,IAAIvE,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CA2BA,OA1BAX,EAAAA,EAAAA,GAAawF,EAAc,CAAC,CAC1B/hB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,EAAO4C,GACvC,OAAQ5C,GACN,IAAK,IACH,OAAOid,EAAoBL,EAAwBhG,GACrD,IAAK,KACH,OAAOhU,EAAMqB,cAAc2S,EAAY,CACrCnH,KAAM,WAEV,QACE,OAAO2N,GAAapd,EAAMnC,OAAQ+Y,GAExC,GACC,CACDrY,IAAK,WACLsE,MAAO,SAAkBgB,EAAOhB,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDtE,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAEhC,OADA9B,EAAKwf,cAAc1d,EAAO,GACnB9B,CACT,KAEKuf,CACT,CAzCuC,CAyCrClE,GC1CSoE,GAAsC,SAAU7D,IACzDzB,EAAAA,EAAAA,GAAUsF,EAAwB7D,GAClC,IAAIxB,GAASC,EAAAA,EAAAA,GAAaoF,GAC1B,SAASA,IACP,IAAI/E,GACJd,EAAAA,EAAAA,GAAgBC,KAAM4F,GACtB,IAAK,IAAIzE,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CAgBA,OAfAX,EAAAA,EAAAA,GAAa0F,EAAwB,CAAC,CACpCjiB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,GAIhC,OAAO8c,EAASM,GAAapd,EAAMnC,OAAQ+Y,IAHvB,SAAuB/T,GACzC,OAAOuF,KAAKsC,MAAM7H,EAAQuF,KAAK2D,IAAI,GAAoB,EAAf/L,EAAMnC,QAChD,GAEF,GACC,CACDU,IAAK,MACLsE,MAAO,SAAa9B,EAAMmd,EAAQrb,GAEhC,OADA9B,EAAK0f,mBAAmB5d,GACjB9B,CACT,KAEKyf,CACT,CA9BiD,CA8B/CpE,GC7BSsE,GAAsC,SAAU/D,IACzDzB,EAAAA,EAAAA,GAAUwF,EAAwB/D,GAClC,IAAIxB,GAASC,EAAAA,EAAAA,GAAasF,GAC1B,SAASA,IACP,IAAIjF,GACJd,EAAAA,EAAAA,GAAgBC,KAAM8F,GACtB,IAAK,IAAI3E,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,MACzEA,CACT,CA2BA,OA1BAX,EAAAA,EAAAA,GAAa4F,EAAwB,CAAC,CACpCniB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,GAChC,OAAQA,GACN,IAAK,IACH,OAAOkd,EAAqBL,EAAuCjG,GACrE,IAAK,KACH,OAAOsG,EAAqBL,EAAwBjG,GACtD,IAAK,OACH,OAAOsG,EAAqBL,EAAuCjG,GACrE,IAAK,QACH,OAAOsG,EAAqBL,EAA0CjG,GAExE,QACE,OAAOsG,EAAqBL,EAA2BjG,GAE7D,GACC,CACDrY,IAAK,MACLsE,MAAO,SAAa9B,EAAM2a,EAAO7Y,GAC/B,OAAI6Y,EAAMQ,eACDnb,EAEF,IAAIyF,KAAKzF,EAAKmG,UAAYrE,EACnC,KAEK6d,CACT,CAzCiD,CAyC/CtE,GCzCSuE,GAAiC,SAAUhE,IACpDzB,EAAAA,EAAAA,GAAUyF,EAAmBhE,GAC7B,IAAIxB,GAASC,EAAAA,EAAAA,GAAauF,GAC1B,SAASA,IACP,IAAIlF,GACJd,EAAAA,EAAAA,GAAgBC,KAAM+F,GACtB,IAAK,IAAI5E,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,CAAC,IAAK,IAAK,MACzEA,CACT,CA2BA,OA1BAX,EAAAA,EAAAA,GAAa6F,EAAmB,CAAC,CAC/BpiB,IAAK,QACLsE,MAAO,SAAe+T,EAAY5W,GAChC,OAAQA,GACN,IAAK,IACH,OAAOkd,EAAqBL,EAAuCjG,GACrE,IAAK,KACH,OAAOsG,EAAqBL,EAAwBjG,GACtD,IAAK,OACH,OAAOsG,EAAqBL,EAAuCjG,GACrE,IAAK,QACH,OAAOsG,EAAqBL,EAA0CjG,GAExE,QACE,OAAOsG,EAAqBL,EAA2BjG,GAE7D,GACC,CACDrY,IAAK,MACLsE,MAAO,SAAa9B,EAAM2a,EAAO7Y,GAC/B,OAAI6Y,EAAMQ,eACDnb,EAEF,IAAIyF,KAAKzF,EAAKmG,UAAYrE,EACnC,KAEK8d,CACT,CAzC4C,CAyC1CvE,GC1CSwE,GAAsC,SAAUjE,IACzDzB,EAAAA,EAAAA,GAAU0F,EAAwBjE,GAClC,IAAIxB,GAASC,EAAAA,EAAAA,GAAawF,GAC1B,SAASA,IACP,IAAInF,GACJd,EAAAA,EAAAA,GAAgBC,KAAMgG,GACtB,IAAK,IAAI7E,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,KAC9DA,CACT,CAcA,OAbAX,EAAAA,EAAAA,GAAa8F,EAAwB,CAAC,CACpCriB,IAAK,QACLsE,MAAO,SAAe+T,GACpB,OAAOuG,GAAqBvG,EAC9B,GACC,CACDrY,IAAK,MACLsE,MAAO,SAAagB,EAAOqa,EAAQrb,GACjC,MAAO,CAAC,IAAI2D,KAAa,IAAR3D,GAAe,CAC9BqZ,gBAAgB,GAEpB,KAEK0E,CACT,CA5BiD,CA4B/CxE,GC5BSyE,GAA2C,SAAUlE,IAC9DzB,EAAAA,EAAAA,GAAU2F,EAA6BlE,GACvC,IAAIxB,GAASC,EAAAA,EAAAA,GAAayF,GAC1B,SAASA,IACP,IAAIpF,GACJd,EAAAA,EAAAA,GAAgBC,KAAMiG,GACtB,IAAK,IAAI9E,EAAOne,UAAUC,OAAQ4C,EAAO,IAAIzC,MAAM+d,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Evb,EAAKub,GAAQpe,UAAUoe,GAKzB,OAHAP,EAAQN,EAAO3c,KAAKL,MAAMgd,EAAQ,CAACP,MAAM5Q,OAAOvJ,KAChDoa,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,WAAY,KAC3DZ,EAAAA,EAAAA,IAAgBoB,EAAAA,EAAAA,GAAuBR,GAAQ,qBAAsB,KAC9DA,CACT,CAcA,OAbAX,EAAAA,EAAAA,GAAa+F,EAA6B,CAAC,CACzCtiB,IAAK,QACLsE,MAAO,SAAe+T,GACpB,OAAOuG,GAAqBvG,EAC9B,GACC,CACDrY,IAAK,MACLsE,MAAO,SAAagB,EAAOqa,EAAQrb,GACjC,MAAO,CAAC,IAAI2D,KAAK3D,GAAQ,CACvBqZ,gBAAgB,GAEpB,KAEK2E,CACT,CA5BsD,CA4BpDzE,GCsCS0E,GAAU,CACnBtR,EAAG,IAAIkN,EACP/O,EAAG,IAAIkQ,GACPlO,EAAG,IAAIqO,GACPlO,EAAG,IAAImO,GACPlO,EAAG,IAAIqO,GACPpO,EAAG,IAAIqO,GACPpO,EAAG,IAAIqO,GACPzQ,EAAG,IAAI0Q,GACPrO,EAAG,IAAIsO,GACPrO,EAAG,IAAIsO,GACPpO,EAAG,IAAIuO,GACP7Q,EAAG,IAAIkR,GACP1O,EAAG,IAAI4O,GACPvO,EAAG,IAAI0O,GACPxO,EAAG,IAAIyO,GACPvO,EAAG,IAAIyO,GACP9hB,EAAG,IAAI+hB,GACP1R,EAAG,IAAI4R,GACPzO,EAAG,IAAI0O,GACPzO,EAAG,IAAI0O,GACP1R,EAAG,IAAI2R,GACP1R,EAAG,IAAI4R,GACP5O,EAAG,IAAI6O,GACP5O,EAAG,IAAI6O,GACP7R,EAAG,IAAI8R,GACP5R,EAAG,IAAI8R,GACP5R,EAAG,IAAI8R,GACPjP,EAAG,IAAImP,GACP9O,EAAG,IAAI+O,GACP5O,EAAG,IAAI6O,GACP3O,EAAG,IAAI4O,ICjFL3O,GAAyB,wDAIzBC,GAA6B,oCAC7BC,GAAsB,eACtBC,GAAoB,MACpB0O,GAAsB,KACtBzO,GAAgC,WA+SrB,SAAS+J,GAAM2E,EAAiBC,EAAmBC,EAAoBhhB,GACpF,IAAIqI,EAAMI,EAAiBH,EAAOC,EAAO+J,EAAO9J,EAAuB+J,EAAkBC,EAAuB7J,EAAuBC,EAAwB6J,EAAOC,EAAOC,EAAOvI,EAAuBwI,EAAkBC,EAAuBC,EAAwBC,GAC5Q5L,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIgZ,EAAajW,OAAOqgB,GACpBG,EAAexgB,OAAOsgB,GACtBpb,GAAiBC,EAAAA,GAAAA,KACjBkD,EAA4L,QAAlLT,EAAgG,QAAxFI,EAA8B,OAAZzI,QAAgC,IAAZA,OAAqB,EAASA,EAAQ8I,cAAwC,IAApBL,EAA6BA,EAAkB9C,EAAemD,cAA6B,IAATT,EAAkBA,EAAO4K,EAAAA,EACjO,IAAKnK,EAAOpG,MACV,MAAM,IAAIqG,WAAW,sCAEvB,IAAIrD,GAAwBmD,EAAAA,EAAAA,GAAu3B,QAA52BP,EAA6jB,QAApjBC,EAAue,QAA9d+J,EAAsH,QAA7G9J,EAAoC,OAAZxI,QAAgC,IAAZA,OAAqB,EAASA,EAAQ0F,6BAA6D,IAA1B8C,EAAmCA,EAAoC,OAAZxI,QAAgC,IAAZA,GAAsE,QAAvCuS,EAAmBvS,EAAQ8I,cAAyC,IAArByJ,GAA8F,QAAtDC,EAAwBD,EAAiBvS,eAA+C,IAA1BwS,OAA/J,EAA2MA,EAAsB9M,6BAA6C,IAAV4M,EAAmBA,EAAQ3M,EAAeD,6BAA6C,IAAV6C,EAAmBA,EAA4D,QAAnDI,EAAwBhD,EAAemD,cAA8C,IAA1BH,GAAyG,QAA5DC,EAAyBD,EAAsB3I,eAAgD,IAA3B4I,OAA9E,EAA2HA,EAAuBlD,6BAA6C,IAAV4C,EAAmBA,EAAQ,GAGt7B,KAAM5C,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIqD,WAAW,6DAEvB,IAAItD,GAAeoD,EAAAA,EAAAA,GAAs1B,QAA30B4J,EAAkiB,QAAzhBC,EAAqd,QAA5cC,EAA6G,QAApGvI,EAAoC,OAAZpK,QAAgC,IAAZA,OAAqB,EAASA,EAAQyF,oBAAoD,IAA1B2E,EAAmCA,EAAoC,OAAZpK,QAAgC,IAAZA,GAAsE,QAAvC4S,EAAmB5S,EAAQ8I,cAAyC,IAArB8J,GAA8F,QAAtDC,EAAwBD,EAAiB5S,eAA+C,IAA1B6S,OAA/J,EAA2MA,EAAsBpN,oBAAoC,IAAVkN,EAAmBA,EAAQhN,EAAeF,oBAAoC,IAAViN,EAAmBA,EAA6D,QAApDI,EAAyBnN,EAAemD,cAA+C,IAA3BgK,GAA2G,QAA7DC,EAAyBD,EAAuB9S,eAAgD,IAA3B+S,OAA/E,EAA4HA,EAAuBtN,oBAAoC,IAAVgN,EAAmBA,EAAQ,GAG54B,KAAMhN,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIsD,WAAW,oDAEvB,GAAqB,KAAjBkY,EACF,MAAmB,KAAfvK,GACKtP,EAAAA,EAAAA,SAAO4Z,GAEP,IAAI1a,KAAK+D,KAGpB,IAkBE6W,EAlBEC,EAAe,CACjBzb,sBAAuBA,EACvBD,aAAcA,EACdqD,OAAQA,GAINsY,EAAU,CAAC,IAAI3F,GACf4F,EAASJ,EAAave,MAAMuP,IAA4BoB,KAAI,SAAUC,GACxE,IAAIC,EAAiBD,EAAU,GAC/B,OAAIC,KAAkBE,EAAAA,GAEbD,EADaC,EAAAA,EAAeF,IACdD,EAAWxK,EAAOlI,YAElC0S,CACT,IAAG/U,KAAK,IAAImE,MAAMsP,IACdsP,EAAa,GACbC,EAAYpI,EAA2BkI,GAE3C,IACE,IAAIG,EAAQ,WACV,IAAI1hB,EAAQohB,EAAMve,MACA,OAAZ3C,QAAgC,IAAZA,GAAsBA,EAAQ8T,+BAAgCpK,EAAAA,EAAAA,IAAyB5J,KAC/G6J,EAAAA,EAAAA,IAAoB7J,EAAOmhB,EAAcH,GAEzB,OAAZ9gB,QAAgC,IAAZA,GAAsBA,EAAQ+T,gCAAiCvK,EAAAA,EAAAA,IAA0B1J,KACjH6J,EAAAA,EAAAA,IAAoB7J,EAAOmhB,EAAcH,GAE3C,IAAIvN,EAAiBzT,EAAM,GACvB2hB,EAASb,GAAQrN,GACrB,GAAIkO,EAAQ,CACV,IAAIC,EAAqBD,EAAOC,mBAChC,GAAI5jB,MAAMC,QAAQ2jB,GAAqB,CACrC,IAAIC,EAAoBL,EAAWM,MAAK,SAAUC,GAChD,OAAOH,EAAmBtjB,SAASyjB,EAAU/hB,QAAU+hB,EAAU/hB,QAAUyT,CAC7E,IACA,GAAIoO,EACF,MAAM,IAAI5Y,WAAW,sCAAsCe,OAAO6X,EAAkBG,UAAW,WAAWhY,OAAOhK,EAAO,sBAE5H,MAAO,GAAkC,MAA9B2hB,EAAOC,oBAA8BJ,EAAW3jB,OAAS,EAClE,MAAM,IAAIoL,WAAW,sCAAsCe,OAAOhK,EAAO,2CAE3EwhB,EAAWzjB,KAAK,CACdiC,MAAOyT,EACPuO,UAAWhiB,IAEb,IAAIwF,EAAcmc,EAAOM,IAAIrL,EAAY5W,EAAOgJ,EAAOpG,MAAOye,GAC9D,IAAK7b,EACH,MAAO,CACL0c,EAAG,IAAI1b,KAAK+D,MAGhB+W,EAAQvjB,KAAKyH,EAAY8W,QACzB1F,EAAapR,EAAYhC,IAC3B,KAAO,CACL,GAAIiQ,EAAe7Q,MAAM0P,IACvB,MAAM,IAAIrJ,WAAW,iEAAmEwK,EAAiB,KAW3G,GAPc,OAAVzT,EACFA,EAAQ,IACoB,MAAnByT,IACTzT,EAA2BA,EA4EtB4C,MAAMwP,IAAqB,GAAG/R,QAAQgS,GAAmB,MAxE9B,IAA9BuE,EAAWjN,QAAQ3J,GAGrB,MAAO,CACLkiB,EAAG,IAAI1b,KAAK+D,MAHdqM,EAAaA,EAAWnT,MAAMzD,EAAMnC,OAMxC,CACF,EACA,IAAK4jB,EAAUjT,MAAO4S,EAAQK,EAAU5H,KAAKC,MAAO,CAClD,IAAIqI,EAAOT,IACX,GAAsB,YAAlB5M,EAAAA,EAAAA,GAAQqN,GAAoB,OAAOA,EAAKD,CAC9C,CAGF,CAAE,MAAOjI,IACPwH,EAAU3Q,EAAEmJ,GACd,CAAE,QACAwH,EAAUzH,GACZ,CACA,GAAIpD,EAAW/Y,OAAS,GAAKkjB,GAAoBhkB,KAAK6Z,GACpD,OAAO,IAAIpQ,KAAK+D,KAElB,IAAI6X,EAAwBd,EAAQ/N,KAAI,SAAU+I,GAChD,OAAOA,EAAOf,QAChB,IAAG8G,MAAK,SAAUrU,EAAGmD,GACnB,OAAOA,EAAInD,CACb,IAAGsU,QAAO,SAAU/G,EAAU7V,EAAOzC,GACnC,OAAOA,EAAM0G,QAAQ4R,KAAc7V,CACrC,IAAG6N,KAAI,SAAUgI,GACf,OAAO+F,EAAQgB,QAAO,SAAUhG,GAC9B,OAAOA,EAAOf,WAAaA,CAC7B,IAAG8G,MAAK,SAAUrU,EAAGmD,GACnB,OAAOA,EAAEqK,YAAcxN,EAAEwN,WAC3B,GACF,IAAGjI,KAAI,SAAUgP,GACf,OAAOA,EAAY,EACrB,IACIxhB,GAAOuG,EAAAA,EAAAA,SAAO4Z,GAClB,GAAI1W,MAAMzJ,EAAKmG,WACb,OAAO,IAAIV,KAAK+D,KAIlB,IAGEiY,EAHEjc,GAAU8M,EAAAA,EAAAA,GAAgBtS,GAAMuF,EAAAA,EAAAA,GAAgCvF,IAChE2a,EAAQ,CAAC,EACT+G,EAAapJ,EAA2B+I,GAE5C,IACE,IAAKK,EAAWjU,MAAOgU,EAASC,EAAW5I,KAAKC,MAAO,CACrD,IAAIwC,GAASkG,EAAO3f,MACpB,IAAKyZ,GAAOC,SAAShW,EAAS8a,GAC5B,OAAO,IAAI7a,KAAK+D,KAElB,IAAIpK,GAASmc,GAAOE,IAAIjW,EAASmV,EAAO2F,GAEpCrjB,MAAMC,QAAQkC,KAChBoG,EAAUpG,GAAO,GACjBoa,EAAOmB,EAAOvb,GAAO,KAGrBoG,EAAUpG,EAEd,CACF,CAAE,MAAO8Z,IACPwI,EAAW3R,EAAEmJ,GACf,CAAE,QACAwI,EAAWzI,GACb,CACA,OAAOzT,CACT,+FChee,SAAS0G,EAAS7F,EAAWsb,IAC1Crb,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACd+H,GAAQpG,EAAAA,EAAAA,GAAU2Z,GAEtB,OADA3hB,EAAKkM,SAASkC,GACPpO,CACT,+FCNe,SAAS4hB,EAAWvb,EAAWwb,IAC5Cvb,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdgI,GAAUrG,EAAAA,EAAAA,GAAU6Z,GAExB,OADA7hB,EAAK4hB,WAAWvT,GACTrO,CACT,+FCLe,SAASyK,EAASpE,EAAWyb,IAC1Cxb,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdzC,GAAQoE,EAAAA,EAAAA,GAAU8Z,GAClBtb,EAAOxG,EAAK2F,cACZ9B,EAAM7D,EAAK6F,UACXkc,EAAuB,IAAItc,KAAK,GACpCsc,EAAqBrX,YAAYlE,EAAM5C,EAAO,IAC9Cme,EAAqB7V,SAAS,EAAG,EAAG,EAAG,GACvC,IAAI8V,ECZS,SAAwB3b,IACrCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdG,EAAOxG,EAAK2F,cACZsc,EAAajiB,EAAK4F,WAClBsc,EAAiB,IAAIzc,KAAK,GAG9B,OAFAyc,EAAexX,YAAYlE,EAAMyb,EAAa,EAAG,GACjDC,EAAehW,SAAS,EAAG,EAAG,EAAG,GAC1BgW,EAAerc,SACxB,CDGoBsc,CAAeJ,GAIjC,OADA/hB,EAAKyK,SAAS7G,EAAOyD,KAAKkO,IAAI1R,EAAKme,IAC5BhiB,CACT,yGEde,SAASoiB,EAAW/b,EAAWgc,IAC5C/b,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GAGda,GAFUc,EAAAA,EAAAA,GAAUqa,IACPhb,KAAKsC,MAAM3J,EAAK4F,WAAa,GAAK,GAEnD,OAAO6E,EAAAA,EAAAA,SAASzK,EAAMA,EAAK4F,WAAoB,EAAPsB,EAC1C,+FCRe,SAASob,EAAWjc,EAAWkc,IAC5Cjc,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdwR,GAAU7P,EAAAA,EAAAA,GAAUua,GAExB,OADAviB,EAAKsiB,WAAWzK,GACT7X,CACT,+FCNe,SAASwiB,EAAQnc,EAAWoc,IACzCnc,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACdG,GAAOwB,EAAAA,EAAAA,GAAUya,GAGrB,OAAIhZ,MAAMzJ,EAAKmG,WACN,IAAIV,KAAK+D,MAElBxJ,EAAK0K,YAAYlE,GACVxG,EACT,mHCWe,SAASyb,EAAIpV,EAAWhF,GAErC,IADAiF,EAAAA,EAAAA,GAAa,EAAGzJ,WACQ,YAApBkX,EAAAA,EAAAA,GAAQ1S,IAAmC,OAAXA,EAClC,MAAM,IAAI6G,WAAW,sCAEvB,IAAIlI,GAAOuG,EAAAA,EAAAA,SAAOF,GAGlB,OAAIoD,MAAMzJ,EAAKmG,WACN,IAAIV,KAAK+D,MAEC,MAAfnI,EAAOmF,MACTxG,EAAK0K,YAAYrJ,EAAOmF,MAEN,MAAhBnF,EAAOuC,QACT5D,GAAOyK,EAAAA,EAAAA,SAASzK,EAAMqB,EAAOuC,QAEZ,MAAfvC,EAAOrB,MACTA,EAAK+J,SAAQ/B,EAAAA,EAAAA,GAAU3G,EAAOrB,OAEZ,MAAhBqB,EAAO+M,OACTpO,EAAKkM,UAASlE,EAAAA,EAAAA,GAAU3G,EAAO+M,QAEX,MAAlB/M,EAAOgN,SACTrO,EAAK4hB,YAAW5Z,EAAAA,EAAAA,GAAU3G,EAAOgN,UAEb,MAAlBhN,EAAOwW,SACT7X,EAAKsiB,YAAWta,EAAAA,EAAAA,GAAU3G,EAAOwW,UAER,MAAvBxW,EAAOwM,cACT7N,EAAK0iB,iBAAgB1a,EAAAA,EAAAA,GAAU3G,EAAOwM,eAEjC7N,EACT,qFCxDe,SAASyL,EAAWpF,IACjCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GAElB,OADArG,EAAKkM,SAAS,EAAG,EAAG,EAAG,GAChBlM,CACT,qFCLe,SAAS2iB,EAAatc,IACnCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GAGlB,OAFArG,EAAK+J,QAAQ,GACb/J,EAAKkM,SAAS,EAAG,EAAG,EAAG,GAChBlM,CACT,qFCNe,SAASyU,EAAepO,IACrCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAImD,GAAOuG,EAAAA,EAAAA,SAAOF,GACduc,EAAe5iB,EAAK4F,WACpBhC,EAAQgf,EAAeA,EAAe,EAG1C,OAFA5iB,EAAKyK,SAAS7G,EAAO,GACrB5D,EAAKkM,SAAS,EAAG,EAAG,EAAG,GAChBlM,CACT,yGCGe,SAASoT,EAAY/M,EAAWlH,GAC7C,IAAIqI,EAAMC,EAAOC,EAAO6B,EAAuB3B,EAAiBC,EAAuBC,EAAuBC,GAC9GzB,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiI,GAAiBC,EAAAA,EAAAA,KACjBH,GAAeoD,EAAAA,EAAAA,GAA+0B,QAAp0BR,EAA8hB,QAAthBC,EAAkd,QAAzcC,EAA6G,QAApG6B,EAAoC,OAAZpK,QAAgC,IAAZA,OAAqB,EAASA,EAAQyF,oBAAoD,IAA1B2E,EAAmCA,EAAoC,OAAZpK,QAAgC,IAAZA,GAAqE,QAAtCyI,EAAkBzI,EAAQ8I,cAAwC,IAApBL,GAA4F,QAArDC,EAAwBD,EAAgBzI,eAA+C,IAA1B0I,OAA5J,EAAwMA,EAAsBjD,oBAAoC,IAAV8C,EAAmBA,EAAQ5C,EAAeF,oBAAoC,IAAV6C,EAAmBA,EAA4D,QAAnDK,EAAwBhD,EAAemD,cAA8C,IAA1BH,GAAyG,QAA5DC,EAAyBD,EAAsB3I,eAAgD,IAA3B4I,OAA9E,EAA2HA,EAAuBnD,oBAAmC,IAAT4C,EAAkBA,EAAO,GAGn4B,KAAM5C,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIsD,WAAW,oDAEvB,IAAIlI,GAAOuG,EAAAA,EAAAA,SAAOF,GACdxC,EAAM7D,EAAKqM,SACXnF,GAAQrD,EAAMe,EAAe,EAAI,GAAKf,EAAMe,EAGhD,OAFA5E,EAAK+J,QAAQ/J,EAAK6F,UAAYqB,GAC9BlH,EAAKkM,SAAS,EAAG,EAAG,EAAG,GAChBlM,CACT,qFC3Be,SAAS6iB,EAAYxc,IAClCC,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIimB,GAAYvc,EAAAA,EAAAA,SAAOF,GACnBrG,EAAO,IAAIyF,KAAK,GAGpB,OAFAzF,EAAK0K,YAAYoY,EAAUnd,cAAe,EAAG,GAC7C3F,EAAKkM,SAAS,EAAG,EAAG,EAAG,GAChBlM,CACT,+FCNe,SAAS+iB,EAAQ1c,EAAWwD,IACzCvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiN,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAOD,EAAAA,EAAAA,SAAQvD,GAAYyD,EAC7B,kFCJe,SAASwI,EAAgBjM,EAAWwD,IACjDvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiN,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAOK,EAAAA,EAAAA,GAAgB7D,GAAYyD,EACrC,+FCJe,SAASkZ,EAAU3c,EAAWwD,IAC3CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiN,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAOS,EAAAA,EAAAA,SAAUjE,GAAYyD,EAC/B,+FCJe,SAASmZ,EAAY5c,EAAWwD,IAC7CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiN,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAOc,EAAAA,EAAAA,SAAYtE,GAAYyD,EACjC,6FCJe,SAASoZ,EAAS7c,EAAWwD,IAC1CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiN,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAOgB,EAAAA,EAAAA,SAASxE,GAAYyD,EAC9B,+FCJe,SAASqZ,EAAS9c,EAAWwD,IAC1CvD,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIiN,GAAS9B,EAAAA,EAAAA,GAAU6B,GACvB,OAAOkB,EAAAA,EAAAA,SAAS1E,GAAYyD,EAC9B,qFCOe,SAASvD,EAAOkP,IAC7BnP,EAAAA,EAAAA,GAAa,EAAGzJ,WAChB,IAAIumB,EAAShnB,OAAOkB,UAAUD,SAASI,KAAKgY,GAG5C,OAAIA,aAAoBhQ,MAA8B,YAAtBsO,EAAAA,EAAAA,GAAQ0B,IAAqC,kBAAX2N,EAEzD,IAAI3d,KAAKgQ,EAAStP,WACI,kBAAbsP,GAAoC,oBAAX2N,EAClC,IAAI3d,KAAKgQ,IAES,kBAAbA,GAAoC,oBAAX2N,GAAoD,qBAAZC,UAE3EA,QAAQC,KAAK,sNAEbD,QAAQC,MAAK,IAAIC,OAAQC,QAEpB,IAAI/d,KAAK+D,KAEpB,wBC5BA,IAAIia,EAAW,CACbC,6BAA8B,SAASC,EAAOlW,EAAGT,GAG/C,IAAI4W,EAAe,CAAC,EAIhBC,EAAQ,CAAC,EACbA,EAAMpW,GAAK,EAMX,IAGIqW,EACA9U,EAAGmS,EACH4C,EACAC,EAEAC,EACAC,EATAC,EAAOV,EAASW,cAAcC,OAWlC,IAVAF,EAAKnnB,KAAKyQ,EAAG,IAUL0W,EAAKG,SAaX,IAAKnD,KATLnS,GADA8U,EAAUK,EAAKI,OACHziB,MACZiiB,EAAiBD,EAAQU,KAGzBR,EAAiBL,EAAM3U,IAAM,CAAC,EAMxBgV,EAAevnB,eAAe0kB,KAOhC8C,EAAgCF,EALpBC,EAAe7C,GAW3B+C,EAAiBL,EAAM1C,IACY,qBAAb0C,EAAM1C,IACT+C,EAAiBD,KAClCJ,EAAM1C,GAAK8C,EACXE,EAAKnnB,KAAKmkB,EAAG8C,GACbL,EAAazC,GAAKnS,IAM1B,GAAiB,qBAANhC,GAAyC,qBAAb6W,EAAM7W,GAAoB,CAC/D,IAAIyX,EAAM,CAAC,8BAA+BhX,EAAG,OAAQT,EAAG,KAAKtP,KAAK,IAClE,MAAM,IAAI6lB,MAAMkB,EAClB,CAEA,OAAOb,CACT,EAEAc,4CAA6C,SAASd,EAAc5W,GAIlE,IAHA,IAAI2X,EAAQ,GACR3V,EAAIhC,EAEDgC,GACL2V,EAAM3nB,KAAKgS,GACG4U,EAAa5U,GAC3BA,EAAI4U,EAAa5U,GAGnB,OADA2V,EAAMC,UACCD,CACT,EAEAE,UAAW,SAASlB,EAAOlW,EAAGT,GAC5B,IAAI4W,EAAeH,EAASC,6BAA6BC,EAAOlW,EAAGT,GACnE,OAAOyW,EAASiB,4CACdd,EAAc5W,EAClB,EAKAoX,cAAe,CACbC,KAAM,SAAUS,GACd,IAEItnB,EAFA0T,EAAIuS,EAASW,cACbpT,EAAI,CAAC,EAGT,IAAKxT,KADLsnB,EAAOA,GAAQ,CAAC,EACJ5T,EACNA,EAAEzU,eAAee,KACnBwT,EAAExT,GAAO0T,EAAE1T,IAKf,OAFAwT,EAAE+T,MAAQ,GACV/T,EAAEgU,OAASF,EAAKE,QAAU9T,EAAE+T,eACrBjU,CACT,EAEAiU,eAAgB,SAAUhY,EAAGmD,GAC3B,OAAOnD,EAAEuX,KAAOpU,EAAEoU,IACpB,EAMAxnB,KAAM,SAAU8E,EAAO0iB,GACrB,IAAIU,EAAO,CAACpjB,MAAOA,EAAO0iB,KAAMA,GAChC3K,KAAKkL,MAAM/nB,KAAKkoB,GAChBrL,KAAKkL,MAAMzD,KAAKzH,KAAKmL,OACvB,EAKAT,IAAK,WACH,OAAO1K,KAAKkL,MAAMI,OACpB,EAEAb,MAAO,WACL,OAA6B,IAAtBzK,KAAKkL,MAAMjoB,MACpB,IAOFa,EAAOC,QAAU6lB,sDCnKnB,MAAM,QACJ2B,EAAO,eACPC,EAAc,SACdC,EAAQ,eACRC,EAAc,yBACdC,GACEppB,OAEJ,IAAI,OAAEqpB,EAAM,KAAEC,EAAI,OAAErpB,GAAWD,QAC3B,MAAEgB,EAAK,UAAEuoB,GAAiC,qBAAZC,SAA2BA,QAExDH,IACHA,EAAS,SAAU5U,GACjB,OAAOA,IAIN6U,IACHA,EAAO,SAAU7U,GACf,OAAOA,IAINzT,IACHA,EAAQ,SAAUyoB,EAAKC,EAAWpmB,GAChC,OAAOmmB,EAAIzoB,MAAM0oB,EAAWpmB,KAI3BimB,IACHA,EAAY,SAAUI,EAAMrmB,GAC1B,OAAO,IAAIqmB,KAAQrmB,KAIvB,MAAMsmB,EAAeC,EAAQhpB,MAAMK,UAAU+X,SAEvC6Q,EAAWD,EAAQhpB,MAAMK,UAAUinB,KACnC4B,EAAYF,EAAQhpB,MAAMK,UAAUN,MAGpCopB,EAAoBH,EAAQrmB,OAAOtC,UAAU6S,aAC7CkW,EAAiBJ,EAAQrmB,OAAOtC,UAAUD,UAC1CipB,EAAcL,EAAQrmB,OAAOtC,UAAUuE,OACvC0kB,EAAgBN,EAAQrmB,OAAOtC,UAAUgC,SACzCknB,EAAgBP,EAAQrmB,OAAOtC,UAAUsL,SACzC6d,EAAaR,EAAQrmB,OAAOtC,UAAUopB,MAEtCC,EAAuBV,EAAQ7pB,OAAOkB,UAAUb,gBAEhDmqB,EAAaX,EAAQxP,OAAOnZ,UAAUtB,MAEtC6qB,EAAkBC,EAAY3d,WAQpC,SAAS8c,EAAQc,GACf,OAAO,SAACC,GAAO,QAAAhM,EAAAne,UAAAC,OAAK4C,EAAI,IAAAzC,MAAA+d,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvb,EAAIub,EAAA,GAAApe,UAAAoe,GAAA,OAAK7d,EAAM2pB,EAAMC,EAAStnB,EAAK,CACzD,CAQA,SAASonB,EAAYC,GACnB,OAAO,mBAAAE,EAAApqB,UAAAC,OAAI4C,EAAI,IAAAzC,MAAAgqB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJxnB,EAAIwnB,GAAArqB,UAAAqqB,GAAA,OAAKvB,EAAUoB,EAAMrnB,EAAK,CAC3C,CAUA,SAASynB,EAAS1L,EAAKvZ,GAA8C,IAAvCklB,EAAiBvqB,UAAAC,OAAA,QAAAP,IAAAM,UAAA,GAAAA,UAAA,GAAGupB,EAC5Cf,GAIFA,EAAe5J,EAAK,MAGtB,IAAI4L,EAAInlB,EAAMpF,OACd,KAAOuqB,KAAK,CACV,IAAIC,EAAUplB,EAAMmlB,GACpB,GAAuB,kBAAZC,EAAsB,CAC/B,MAAMC,EAAYH,EAAkBE,GAChCC,IAAcD,IAEXhC,EAASpjB,KACZA,EAAMmlB,GAAKE,GAGbD,EAAUC,EAEd,CAEA9L,EAAI6L,IAAW,CACjB,CAEA,OAAO7L,CACT,CAQA,SAAS+L,EAAWtlB,GAClB,IAAK,IAAIyC,EAAQ,EAAGA,EAAQzC,EAAMpF,OAAQ6H,IAChBgiB,EAAqBzkB,EAAOyC,KAGlDzC,EAAMyC,GAAS,MAInB,OAAOzC,CACT,CAQA,SAASulB,EAAMnlB,GACb,MAAMolB,EAAYrrB,EAAO,MAEzB,IAAK,MAAOqd,EAAU5X,KAAUsjB,EAAQ9iB,GACdqkB,EAAqBrkB,EAAQoX,KAG/Czc,MAAMC,QAAQ4E,GAChB4lB,EAAUhO,GAAY8N,EAAW1lB,GAEjCA,GACiB,kBAAVA,GACPA,EAAM6lB,cAAgBvrB,OAEtBsrB,EAAUhO,GAAY+N,EAAM3lB,GAE5B4lB,EAAUhO,GAAY5X,GAK5B,OAAO4lB,CACT,CASA,SAASE,EAAatlB,EAAQvG,GAC5B,KAAkB,OAAXuG,GAAiB,CACtB,MAAMulB,EAAOrC,EAAyBljB,EAAQvG,GAE9C,GAAI8rB,EAAM,CACR,GAAIA,EAAKC,IACP,OAAO7B,EAAQ4B,EAAKC,KAGtB,GAA0B,oBAAfD,EAAK/lB,MACd,OAAOmkB,EAAQ4B,EAAK/lB,MAExB,CAEAQ,EAASijB,EAAejjB,EAC1B,CAEA,SAASylB,IACP,OAAO,IACT,CAEA,OAAOA,CACT,CC1LO,MAAMC,EAAOvC,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAIWwC,EAAMxC,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGWyC,EAAazC,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOW0C,EAAgB1C,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGW2C,EAAS3C,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKW4C,EAAmB5C,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGW6C,EAAO7C,EAAO,CAAC,UCrRf8C,EAAO9C,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,SAGW+C,EAAM/C,EAAO,CACxB,gBACA,aACA,WACA,qBACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGWgD,EAAShD,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,UAGWiD,EAAMjD,EAAO,CACxB,aACA,SACA,cACA,YACA,gBCzWWkD,EAAgBjD,EAAK,6BACrBkD,EAAWlD,EAAK,yBAChBmD,EAAcnD,EAAK,iBACnBoD,EAAYpD,EAAK,8BACjBqD,EAAYrD,EAAK,kBACjBsD,EAAiBtD,EAC5B,6FAEWuD,EAAoBvD,EAAK,yBACzBwD,EAAkBxD,EAC7B,+DAEWyD,EAAezD,EAAK,WACpB0D,EAAiB1D,EAAK,0NCSnC,MAAM2D,EAAY,CAChB/B,QAAS,EACTgC,UAAW,EACXhB,KAAM,EACNiB,aAAc,EACdC,gBAAiB,EACjBC,WAAY,EACZC,uBAAwB,EACxBC,QAAS,EACTC,SAAU,EACVC,aAAc,GACdC,iBAAkB,GAClBC,SAAU,IAGNC,EAAY,WAChB,MAAyB,qBAAXC,OAAyB,KAAOA,MAChD,EAUMC,EAA4B,SAAUC,EAAcC,GACxD,GAC0B,kBAAjBD,GAC8B,oBAA9BA,EAAaE,aAEpB,OAAO,KAMT,IAAIC,EAAS,KACb,MAAMC,EAAY,wBACdH,GAAqBA,EAAkBI,aAAaD,KACtDD,EAASF,EAAkBK,aAAaF,IAG1C,MAAMG,EAAa,aAAeJ,EAAS,IAAMA,EAAS,IAE1D,IACE,OAAOH,EAAaE,aAAaK,EAAY,CAC3CC,WAAWpC,GACFA,EAETqC,gBAAgBC,GACPA,IAGX,MAAOC,GAOP,OAHAzH,QAAQC,KACN,uBAAyBoH,EAAa,0BAEj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,ICIMm0E,GAAS,SAACh8F,GAAA,gBCCQA,EACtBiB,EACAgpB,EACAzhB,GAAA,YAAAA,IAAAA,EAAkBnJ,KAEb0J,EAAAA,EAAAA,oBAAmBkhB,GAAA,OACfxqB,EAAiB,EAAG5P,OAAOo6B,IAAA,IAK9BvsB,EAAmB,kBAAauD,EAAqBgpB,EAAKzhB,EAASuzF,GAAA1uG,WAAA,EAAAP,WAAA,SAGzE4Q,EAAiBwsK,WAAa,SAAAnhK,GAAA,OAC5B/I,EAAqBiB,EAAsBgpB,EAAAptB,EAAA,GAAU2L,EAAA,GAAYO,GAAA,EAGnErL,EAAiBmsD,MAAQ,SAAA9gD,GAAA,OACvB/I,EAAqBiB,EAAsBgpB,EAAAptB,EAAA,GACtC2L,EAAA,CACHqhD,MAAO38D,MAAMK,UAAU2L,OAAOsP,EAAQqhD,MAAO9gD,GAAOyI,OAAOsQ,WAAA,EAGxDpkB,CAAA,CDzBO,CAAqC69F,GAAiBv7F,EAAA,EDJvD,CACb,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,UACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAGA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OA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","sources":["../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/classnames/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/addQuarters/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/endOfYear/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/getDate/index.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/startOfISOWeek/index.js","../node_modules/date-fns/esm/startOfISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeek/index.js","../node_modules/date-fns/esm/getMinutes/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/getQuarter/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/getTime/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameQuarter/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/max/index.js","../node_modules/date-fns/esm/min/index.js","../node_modules/date-fns/esm/parseISO/index.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/parse/_lib/Setter.js","../node_modules/date-fns/esm/parse/_lib/Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/esm/parse/_lib/constants.js","../node_modules/date-fns/esm/parse/_lib/utils.js","../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/date-fns/esm/setQuarter/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/set/index.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/startOfQuarter/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/date-fns/esm/subQuarters/index.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/date-fns/esm/subYears/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/dompurify/src/utils.js","../node_modules/dompurify/src/tags.js","../node_modules/dompurify/src/attrs.js","../node_modules/dompurify/src/regexp.js","../node_modules/dompurify/src/purify.js","../node_modules/encode-utf8/index.js","../node_modules/highcharts/highstock.src.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/qrcode/lib/browser.js","../node_modules/qrcode/lib/can-promise.js","../node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/qrcode/lib/core/byte-data.js","../node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/qrcode/lib/core/format-info.js","../node_modules/qrcode/lib/core/galois-field.js","../node_modules/qrcode/lib/core/kanji-data.js","../node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/qrcode/lib/core/mode.js","../node_modules/qrcode/lib/core/numeric-data.js","../node_modules/qrcode/lib/core/polynomial.js","../node_modules/qrcode/lib/core/qrcode.js","../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/qrcode/lib/core/regex.js","../node_modules/qrcode/lib/core/segments.js","../node_modules/qrcode/lib/core/utils.js","../node_modules/qrcode/lib/core/version-check.js","../node_modules/qrcode/lib/core/version.js","../node_modules/qrcode/lib/renderer/canvas.js","../node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/qrcode/lib/renderer/utils.js","../node_modules/react-datepicker/dist/react-datepicker.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-obfuscate/dist/obfuscate.js","../node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/react-popper/lib/esm/usePopper.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/react-popper/lib/esm/Reference.js","../node_modules/react-table/src/publicUtils.js","../node_modules/react-table/src/utils.js","../node_modules/react-table/src/makeDefaultPluginHooks.js","../node_modules/react-table/src/hooks/useColumnVisibility.js","../node_modules/react-table/src/hooks/useTable.js","../node_modules/react-table/src/plugin-hooks/useExpanded.js","../node_modules/react-table/src/filterTypes.js","../node_modules/react-table/src/plugin-hooks/useFilters.js","../node_modules/react-table/src/plugin-hooks/useGlobalFilter.js","../node_modules/react-table/src/aggregations.js","../node_modules/react-table/src/plugin-hooks/useGroupBy.js","../node_modules/react-table/src/sortTypes.js","../node_modules/react-table/src/plugin-hooks/useSortBy.js","../node_modules/react-table/src/plugin-hooks/usePagination.js","../node_modules/react-table/src/plugin-hooks/_UNSTABLE_usePivotColumns.js","../node_modules/react-table/src/plugin-hooks/useRowSelect.js","../node_modules/react-table/src/plugin-hooks/useRowState.js","../node_modules/react-table/src/plugin-hooks/useColumnOrder.js","../node_modules/react-table/src/plugin-hooks/useResizeColumns.js","../node_modules/react-table/src/plugin-hooks/useAbsoluteLayout.js","../node_modules/react-table/src/plugin-hooks/useBlockLayout.js","../node_modules/react-table/src/plugin-hooks/useFlexLayout.js","../node_modules/react-table/src/plugin-hooks/useGridLayout.js","../node_modules/react-table/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/styled-components/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/styled-components/src/utils/interleave.js","../node_modules/styled-components/src/utils/isPlainObject.js","../node_modules/styled-components/src/utils/empties.js","../node_modules/styled-components/src/utils/isFunction.js","../node_modules/styled-components/src/utils/getComponentName.js","../node_modules/styled-components/src/utils/isStyledComponent.js","../node_modules/styled-components/src/constants.js","../node_modules/styled-components/src/utils/error.js","../node_modules/styled-components/src/sheet/GroupedTag.js","../node_modules/styled-components/src/sheet/GroupIDAllocator.js","../node_modules/styled-components/src/sheet/Rehydration.js","../node_modules/styled-components/src/utils/nonce.js","../node_modules/styled-components/src/sheet/dom.js","../node_modules/styled-components/src/sheet/Tag.js","../node_modules/styled-components/src/sheet/Sheet.js","../node_modules/styled-components/src/utils/generateAlphabeticName.js","../node_modules/styled-components/src/utils/hash.js","../node_modules/styled-components/src/utils/isStaticRules.js","../node_modules/styled-components/src/models/ComponentStyle.js","../node_modules/styled-components/src/utils/stylis.js","../node_modules/styled-components/src/utils/stylisPluginInsertRule.js","../node_modules/styled-components/src/models/StyleSheetManager.js","../node_modules/styled-components/src/models/Keyframes.js","../node_modules/styled-components/src/utils/hyphenateStyleName.js","../node_modules/styled-components/src/utils/flatten.js","../node_modules/styled-components/src/utils/isStatelessFunction.js","../node_modules/styled-components/src/utils/addUnitIfNeeded.js","../node_modules/styled-components/src/constructors/css.js","../node_modules/styled-components/src/utils/checkDynamicCreation.js","../node_modules/styled-components/src/utils/determineTheme.js","../node_modules/styled-components/src/utils/escape.js","../node_modules/styled-components/src/utils/generateComponentId.js","../node_modules/styled-components/src/utils/isTag.js","../node_modules/styled-components/src/utils/mixinDeep.js","../node_modules/styled-components/src/models/ThemeProvider.js","../node_modules/styled-components/src/models/StyledComponent.js","../node_modules/styled-components/src/utils/generateDisplayName.js","../node_modules/styled-components/src/utils/joinStrings.js","../node_modules/styled-components/src/utils/domElements.js","../node_modules/styled-components/src/constructors/styled.js","../node_modules/styled-components/src/constructors/constructWithOptions.js","../node_modules/styled-components/src/models/GlobalStyle.js","../node_modules/styled-components/src/constructors/createGlobalStyle.js","../node_modules/styled-components/src/constructors/keyframes.js","../node_modules/styled-components/src/models/ServerStyleSheet.js","../node_modules/styled-components/src/hoc/withTheme.js","../node_modules/styled-components/src/hooks/useTheme.js","../node_modules/styled-components/src/secretInternals.js","../node_modules/styled-components/src/base.js","../node_modules/styled-normalize/dist/index.js","../node_modules/styled-theming/index.js","../node_modules/warning/warning.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-c39617d8.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/utils/dom/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/react-select/dist/react-select.esm.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router-dom/node_modules/react-router/lib/context.ts","../node_modules/react-router-dom/node_modules/react-router/lib/hooks.tsx","../node_modules/react-router-dom/node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/node_modules/react-router/index.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-number-format/dist/react-number-format.es.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/bytesToUuid.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/react-tooltip/node_modules/core-js/internals/global.js","../node_modules/react-tooltip/node_modules/core-js/internals/fails.js","../node_modules/react-tooltip/node_modules/core-js/internals/descriptors.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-bind-native.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-call.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/react-tooltip/node_modules/core-js/internals/create-property-descriptor.js","../node_modules/react-tooltip/node_modules/core-js/internals/engine-v8-version.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-uncurry-this-raw.js","../node_modules/react-tooltip/node_modules/core-js/internals/classof-raw.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-uncurry-this.js","../node_modules/react-tooltip/node_modules/core-js/internals/indexed-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-null-or-undefined.js","../node_modules/react-tooltip/node_modules/core-js/internals/require-object-coercible.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-indexed-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/document-all.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-callable.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/get-built-in.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-is-prototype-of.js","../node_modules/react-tooltip/node_modules/core-js/internals/engine-user-agent.js","../node_modules/react-tooltip/node_modules/core-js/internals/symbol-constructor-detection.js","../node_modules/react-tooltip/node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-symbol.js","../node_modules/react-tooltip/node_modules/core-js/internals/try-to-string.js","../node_modules/react-tooltip/node_modules/core-js/internals/a-callable.js","../node_modules/react-tooltip/node_modules/core-js/internals/get-method.js","../node_modules/react-tooltip/node_modules/core-js/internals/ordinary-to-primitive.js","../node_modules/react-tooltip/node_modules/core-js/internals/define-global-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/shared-store.js","../node_modules/react-tooltip/node_modules/core-js/internals/shared.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/has-own-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/uid.js","../node_modules/react-tooltip/node_modules/core-js/internals/well-known-symbol.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-primitive.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-property-key.js","../node_modules/react-tooltip/node_modules/core-js/internals/document-create-element.js","../node_modules/react-tooltip/node_modules/core-js/internals/ie8-dom-define.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/react-tooltip/node_modules/core-js/internals/v8-prototype-define-bug.js","../node_modules/react-tooltip/node_modules/core-js/internals/an-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-define-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-name.js","../node_modules/react-tooltip/node_modules/core-js/internals/inspect-source.js","../node_modules/react-tooltip/node_modules/core-js/internals/internal-state.js","../node_modules/react-tooltip/node_modules/core-js/internals/weak-map-basic-detection.js","../node_modules/react-tooltip/node_modules/core-js/internals/shared-key.js","../node_modules/react-tooltip/node_modules/core-js/internals/hidden-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/make-built-in.js","../node_modules/react-tooltip/node_modules/core-js/internals/define-built-in.js","../node_modules/react-tooltip/node_modules/core-js/internals/math-trunc.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-integer-or-infinity.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-absolute-index.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-length.js","../node_modules/react-tooltip/node_modules/core-js/internals/length-of-array-like.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-includes.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-keys-internal.js","../node_modules/react-tooltip/node_modules/core-js/internals/enum-bug-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/react-tooltip/node_modules/core-js/internals/own-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-forced.js","../node_modules/react-tooltip/node_modules/core-js/internals/export.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-bind-context.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-array.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-string-tag-support.js","../node_modules/react-tooltip/node_modules/core-js/internals/classof.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-constructor.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-species-constructor.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-species-create.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-iteration.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-define-properties.js","../node_modules/react-tooltip/node_modules/core-js/internals/html.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-create.js","../node_modules/react-tooltip/node_modules/core-js/internals/add-to-unscopables.js","../node_modules/react-tooltip/node_modules/core-js/modules/es.array.find.js","../node_modules/react-tooltip/src/constant.js","../node_modules/react-tooltip/src/decorators/staticMethods.js","../node_modules/react-tooltip/src/decorators/customEvent.js","../node_modules/react-tooltip/src/decorators/bodyMode.js","../node_modules/react-tooltip/src/utils/getPosition.js","../node_modules/react-tooltip/src/utils/getTipContent.js","../node_modules/react-tooltip/src/utils/aria.js","../node_modules/react-tooltip/src/utils/nodeListToArray.js","../node_modules/react-tooltip/src/decorators/defaultStyles.js","../node_modules/react-tooltip/src/decorators/styler.js","../node_modules/react-tooltip/src/index.js","../node_modules/react-tooltip/src/decorators/trackRemoval.js","../node_modules/react-tooltip/src/decorators/windowListener.js","../node_modules/react-tooltip/src/decorators/isCapture.js","../node_modules/react-tooltip/src/decorators/getEffect.js","../node_modules/react-tooltip/src/utils/uuid.js","../node_modules/@sop/unify-ui-react/src/components/Accordion/accordion.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/alone.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/alone_child.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/arrow_down.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/arrow_left.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/arrow_right.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/arrow_up.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/caret.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/checkmark.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/checkmark_bold.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/close.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/datepicker.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/datepicker2.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/decrease.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/download.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/error.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/flag_dk.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/flag_fi.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/flag_no.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/flag_se.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/flag_us.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/increase.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/info.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/logo.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/married.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/married_child.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/no_change.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/plus.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/refresh.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/IconTypes/search.tsx","../node_modules/@sop/unify-ui-react/src/components/Icon/icon.tsx","../node_modules/@sop/unify-ui-react/src/components/Accordion/accordionSection.tsx","../node_modules/@sop/unify-ui-react/src/components/Alert/AlertType.ts","../node_modules/@sop/unify-ui-react/src/components/Alert/alert.tsx","../node_modules/@sop/unify-ui-react/src/components/Button/styles.ts","../node_modules/@sop/unify-ui-react/src/components/Button/button.tsx","../node_modules/@sop/unify-ui-react/src/randomizedId/index.ts","../node_modules/@sop/unify-ui-react/src/components/Checkbox/styles.tsx","../node_modules/@sop/unify-ui-react/src/common/unfiyContentWrapper.tsx","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/sv/_lib/formatDistance/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/sv/_lib/formatLong/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/sv/_lib/formatRelative/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/sv/_lib/localize/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/sv/_lib/match/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/sv/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/da/_lib/formatDistance/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/da/_lib/formatLong/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/da/_lib/formatRelative/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/da/_lib/localize/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/da/_lib/match/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/da/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nb/_lib/formatDistance/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nb/_lib/formatLong/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nb/_lib/formatRelative/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nb/_lib/localize/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nb/_lib/match/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nb/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nn/_lib/formatDistance/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nn/_lib/formatLong/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nn/_lib/formatRelative/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nn/_lib/localize/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nn/_lib/match/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nn/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/fi/_lib/formatDistance/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/fi/_lib/formatLong/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/fi/_lib/formatRelative/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/fi/_lib/localize/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/fi/_lib/match/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/fi/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nl/_lib/formatDistance/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nl/_lib/formatLong/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nl/_lib/formatRelative/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nl/_lib/localize/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nl/_lib/match/index.js","../node_modules/@sop/unify-ui-react/node_modules/date-fns/esm/locale/nl/index.js","../node_modules/@sop/unify-ui-react/node_modules/lodash.camelcase/index.js","../node_modules/@sop/unify-ui-react/node_modules/lodash.mapkeys/index.js","../node_modules/@sop/unify-ui-react/node_modules/chroma-js/chroma.js","../node_modules/@sop/unify-ui-react/src/theme/color.tsx","../node_modules/@sop/unify-ui-react/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/@sop/unify-ui-react/node_modules/object-assign/index.js","../node_modules/@sop/unify-ui-react/node_modules/react-is/cjs/react-is.development.js","../node_modules/@sop/unify-ui-react/node_modules/react-is/index.js","../node_modules/@sop/unify-ui-react/node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/@sop/unify-ui-react/node_modules/prop-types/lib/has.js","../node_modules/@sop/unify-ui-react/node_modules/prop-types/checkPropTypes.js","../node_modules/@sop/unify-ui-react/node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/@sop/unify-ui-react/node_modules/prop-types/index.js","../node_modules/@sop/unify-ui-react/node_modules/react-fast-compare/index.js","../node_modules/@sop/unify-ui-react/node_modules/invariant/browser.js","../node_modules/@sop/unify-ui-react/node_modules/react-helmet-async/lib/index.module.js","../node_modules/@sop/unify-ui-react/node_modules/shallowequal/index.js","../node_modules/@sop/unify-ui-react/src/theme/favicon.tsx","../node_modules/@sop/unify-ui-react/src/theme/font.tsx","../node_modules/@sop/unify-ui-react/src/common/constants.ts","../node_modules/@sop/unify-ui-react/src/theme/branding.tsx","../node_modules/@sop/unify-ui-react/src/components/Input/input-side.ts","../node_modules/@sop/unify-ui-react/src/components/Input/input-size.ts","../node_modules/@sop/unify-ui-react/src/components/Input/styles.tsx","../node_modules/@sop/unify-ui-react/src/components/Input/input.tsx","../node_modules/@sop/unify-ui-react/node_modules/universal-cookie/node_modules/cookie/index.js","../node_modules/@sop/unify-ui-react/node_modules/universal-cookie/es6/utils.js","../node_modules/@sop/unify-ui-react/node_modules/universal-cookie/es6/Cookies.js","../node_modules/@sop/unify-ui-react/node_modules/react-cookie/es6/CookiesContext.js","../node_modules/@sop/unify-ui-react/node_modules/react-cookie/es6/CookiesProvider.js","../node_modules/@sop/unify-ui-react/node_modules/react-cookie/es6/useCookies.js","../node_modules/@sop/unify-ui-react/src/context/culture.tsx","../node_modules/@sop/unify-ui-react/src/components/Datepicker/styles.tsx","../node_modules/@sop/unify-ui-react/src/components/Datepicker/datepicker.tsx","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/helpers/tabbable.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/helpers/focusManager.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/helpers/scopeTab.js","../node_modules/@sop/unify-ui-react/node_modules/warning/warning.js","../node_modules/@sop/unify-ui-react/node_modules/exenv/index.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/helpers/safeHTMLElement.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/helpers/ariaAppHider.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/helpers/classList.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/helpers/portalOpenInstances.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/helpers/bodyTrap.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/components/ModalPortal.js","../node_modules/@sop/unify-ui-react/node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/components/Modal.js","../node_modules/@sop/unify-ui-react/node_modules/react-modal/lib/index.js","../node_modules/@sop/unify-ui-react/src/components/Dialog/styles.tsx","../node_modules/@sop/unify-ui-react/src/components/Dialog/dialog.tsx","../node_modules/@sop/unify-ui-react/src/unify/Modal/common.tsx","../node_modules/@sop/unify-ui-react/src/components/Spinner/unifySpinner.tsx","../node_modules/@sop/unify-ui-react/src/components/Spinner/cssCircleSpinner.tsx","../node_modules/@sop/unify-ui-react/src/components/Spinner/spinner.tsx","../node_modules/@sop/unify-ui-react/src/components/Loader/styles.tsx","../node_modules/@sop/unify-ui-react/node_modules/lodash/lodash.js","../node_modules/@sop/unify-ui-react/src/components/Dropdown/multiValueContainer.tsx","../node_modules/@sop/unify-ui-react/src/theme/size.tsx","../node_modules/@sop/unify-ui-react/src/components/Dropdown/common.tsx","../node_modules/@sop/unify-ui-react/src/components/Dropdown/dropdown.tsx","../node_modules/@sop/unify-ui-react/node_modules/react-icons/lib/esm/iconContext.js","../node_modules/@sop/unify-ui-react/src/notification/notification.tsx","../node_modules/@sop/unify-ui-react/node_modules/react-icons/lib/esm/iconBase.js","../node_modules/@sop/unify-ui-react/node_modules/react-icons/fa/index.esm.js","../node_modules/@sop/unify-ui-react/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@sop/unify-ui-react/node_modules/react-transition-group/esm/config.js","../node_modules/@sop/unify-ui-react/node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/@sop/unify-ui-react/node_modules/react-transition-group/esm/Transition.js","../node_modules/@sop/unify-ui-react/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@sop/unify-ui-react/node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/@sop/unify-ui-react/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@sop/unify-ui-react/node_modules/classnames/index.js","../node_modules/@sop/unify-ui-react/node_modules/react-toastify/dist/react-toastify.esm.js","../node_modules/@sop/unify-ui-react/src/notification/notificationFunctions.tsx","../node_modules/@sop/unify-ui-react/node_modules/tslib/tslib.es6.js","../node_modules/@sop/unify-ui-react/node_modules/file-selector/dist/es5/file.js","../node_modules/@sop/unify-ui-react/node_modules/file-selector/dist/es5/file-selector.js","../node_modules/@sop/unify-ui-react/node_modules/attr-accept/dist/es/index.js","../node_modules/@sop/unify-ui-react/node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/@sop/unify-ui-react/node_modules/react-dropzone/dist/es/index.js","../node_modules/@sop/unify-ui-react/node_modules/lodash.merge/index.js","../node_modules/@sop/unify-ui-react/src/localization/localization.tsx","../node_modules/@sop/unify-ui-react/src/components/FileInput/styles.tsx","../node_modules/@sop/unify-ui-react/src/components/FileInput/fileInput.tsx","../node_modules/@sop/unify-ui-react/src/components/FileInput/translations.tsx","../node_modules/@sop/unify-ui-react/src/components/Foldout/styles.tsx","../node_modules/@sop/unify-ui-react/node_modules/debounce/index.js","../node_modules/@sop/unify-ui-react/src/components/ScrollContainer/scrollContainer.tsx","../node_modules/@sop/unify-ui-react/src/components/Menubar/menuBar.tsx","../node_modules/@sop/unify-ui-react/src/components/Menubar/menuItem.tsx","../node_modules/@sop/unify-ui-react/src/components/Money/money.tsx","../node_modules/@sop/unify-ui-react/node_modules/marked/lib/marked.umd.js","../node_modules/@sop/unify-ui-react/src/components/RadioButton/radioButtonGroup.tsx","../node_modules/@sop/unify-ui-react/src/components/RadioButton/radioButton.tsx","../node_modules/@sop/unify-ui-react/src/session/session.tsx","../node_modules/@sop/unify-ui-react/src/components/RadioButton/RadioSegmentWrapper.tsx","../node_modules/@sop/unify-ui-react/src/security/unifySecurityProvider.tsx","../node_modules/@sop/unify-ui-react/src/components/Sidebar/sidebar.tsx","../node_modules/@sop/unify-ui-react/src/components/RequireFunction/overlayWithSpinner.tsx","../node_modules/@sop/unify-ui-react/src/components/Search/search.tsx","../node_modules/@sop/unify-ui-react/src/components/Table/table.tsx","../node_modules/@sop/unify-ui-react/src/components/TableResponsive/style.tsx","../node_modules/@sop/unify-ui-react/src/components/TableResponsive/tableAccordion.tsx","../node_modules/@sop/unify-ui-react/node_modules/use-debounce/dist/index.module.js","../node_modules/@sop/unify-ui-react/node_modules/react-tabs/esm/helpers/elementTypes.js","../node_modules/@sop/unify-ui-react/node_modules/react-tabs/esm/helpers/childrenDeepMap.js","../node_modules/@sop/unify-ui-react/node_modules/clsx/dist/clsx.m.js","../node_modules/@sop/unify-ui-react/node_modules/react-tabs/esm/helpers/count.js","../node_modules/@sop/unify-ui-react/node_modules/react-tabs/esm/components/UncontrolledTabs.js","../node_modules/@sop/unify-ui-react/node_modules/react-tabs/esm/components/Tabs.js","../node_modules/@sop/unify-ui-react/node_modules/react-tabs/esm/components/TabList.js","../node_modules/@sop/unify-ui-react/node_modules/react-tabs/esm/components/Tab.js","../node_modules/@sop/unify-ui-react/node_modules/react-tabs/esm/components/TabPanel.js","../node_modules/@sop/unify-ui-react/src/components/Tabs/components/tabs.tsx","../node_modules/@sop/unify-ui-react/src/components/Tabs/components/tab.tsx","../node_modules/@sop/unify-ui-react/src/components/Tabs/components/tabList.tsx","../node_modules/@sop/unify-ui-react/src/components/Tabs/components/tabPanel.tsx","../node_modules/@sop/unify-ui-react/src/components/Textarea/textarea.tsx","../node_modules/@sop/unify-ui-react/src/components/Ticker/components/ticker.tsx","../node_modules/@sop/unify-ui-react/src/components/Toggle/toggle.tsx","../node_modules/@sop/unify-ui-react/src/components/Tooltip/tooltip.tsx","../node_modules/@sop/unify-ui-react/src/chrome/logo.tsx","../node_modules/@sop/unify-ui-react/node_modules/url/node_modules/punycode/punycode.js","../node_modules/@sop/unify-ui-react/node_modules/url/util.js","../node_modules/@sop/unify-ui-react/node_modules/querystring/decode.js","../node_modules/@sop/unify-ui-react/node_modules/querystring/encode.js","../node_modules/@sop/unify-ui-react/node_modules/querystring/index.js","../node_modules/@sop/unify-ui-react/node_modules/url/url.js","../node_modules/@sop/unify-ui-react/src/context/ui.tsx","../node_modules/@sop/unify-ui-react/src/chrome/HeaderItem.tsx","../node_modules/@sop/unify-ui-react/src/common/hooks/useEventListener.ts","../node_modules/@sop/unify-ui-react/src/common/hooks/useIsomorphicLayoutEffect.ts","../node_modules/@sop/unify-ui-react/src/common/hooks/useOnClickOutside.ts","../node_modules/@sop/unify-ui-react/src/common/hooks/useTimeout.ts","../node_modules/@sop/unify-ui-react/src/common/hooks/useToggle.ts","../node_modules/@sop/unify-ui-react/src/chrome/languagechooser.tsx","../node_modules/@sop/unify-ui-react/src/chrome/UserMenu/translation.ts","../node_modules/@sop/unify-ui-react/src/chrome/UserMenu/menuItem.tsx","../node_modules/@sop/unify-ui-react/src/chrome/UserMenu/unifyusermenudropdown.tsx","../node_modules/@sop/unify-ui-react/src/chrome/changepassword.tsx","../node_modules/@sop/unify-ui-react/src/chrome/switchUser.tsx","../node_modules/@sop/unify-ui-react/src/chrome/legalText.tsx","../node_modules/@sop/unify-ui-react/src/chrome/UserMenu/usermenu.tsx","../node_modules/@sop/unify-ui-react/src/common/hooks/useBoolean.ts","../node_modules/@sop/unify-ui-react/src/chrome/notificationcounter.tsx","../node_modules/@sop/unify-ui-react/src/chrome/notification.tsx","../node_modules/@sop/unify-ui-react/src/chrome/notificationmenu.tsx","../node_modules/@sop/unify-ui-react/src/chrome/globalmenu.tsx","../node_modules/@sop/unify-ui-react/src/chrome/topmenu.tsx","../node_modules/@sop/unify-ui-react/src/chrome/unifyheader.tsx","../node_modules/@sop/unify-ui-react/src/errorHandling/unifyErrorFallback.tsx","../node_modules/@sop/unify-ui-react/src/errorHandling/errorBoundary.tsx","../node_modules/@sop/unify-ui-react/src/unify/loader.tsx","../node_modules/@sop/unify-ui-react/src/global-styles.tsx","../node_modules/@sop/unify-ui-react/src/unify/Modal/SigningOutDialog.tsx","../node_modules/@sop/unify-ui-react/src/unify/Modal/AboutToExpireDialog.tsx","../node_modules/@sop/unify-ui-react/src/unify/Modal/ImpersonationSignoutDialog.tsx","../node_modules/@sop/unify-ui-react/src/session/endsessioniframe.tsx","../node_modules/@sop/unify-ui-react/src/session/sessionpolleriframe.tsx","../node_modules/@sop/unify-ui-react/node_modules/react-page-visibility/dist/es5/utils.js","../node_modules/@sop/unify-ui-react/node_modules/react-page-visibility/dist/es5/usePageVisibility.js","../node_modules/@sop/unify-ui-react/src/session/unifysessionprovider.tsx","../node_modules/@sop/unify-ui-react/src/security/unifySecurityToolsProvider.tsx","../node_modules/@sop/unify-ui-react/src/static/SignOutFailed.tsx","../node_modules/@sop/unify-ui-react/src/static/SignedOut.tsx","../node_modules/@sop/unify-ui-react/src/unify/unifycontentrouter.tsx","../node_modules/@sop/unify-ui-react/src/localization/translationTools.tsx","../node_modules/@sop/unify-ui-react/src/notification/notifcationContainer.tsx","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/Errors.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/ILogger.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/HttpClient.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/Loggers.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/Utils.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/NodeHttpClient.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/Subject.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/HubConnection.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/ITransport.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/AbortController.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","../node_modules/@sop/unify-ui-react/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","../node_modules/@sop/unify-ui-react/src/chrome/notificationHub.tsx","../node_modules/@sop/unify-ui-react/src/unify/unify.tsx","../node_modules/@sop/unify-ui-react/src/unify/mvcLoader.tsx","../node_modules/@sop/unify-ui-react/src/security/security.tsx","../node_modules/@sop/unify-ui-react/src/theme/whitneyfont.ts","../node_modules/@sop/unify-ui-react/src/unify/unifymock.tsx","reportWebVitals.ts","../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","../node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js","../node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js","../node_modules/@tanstack/query-core/src/notifyManager.ts","../node_modules/@tanstack/query-core/src/subscribable.ts","../node_modules/@tanstack/query-core/src/focusManager.ts","../node_modules/@tanstack/query-core/src/onlineManager.ts","../node_modules/@tanstack/query-core/src/retryer.ts","../node_modules/@tanstack/query-core/src/removable.ts","../node_modules/@tanstack/query-core/src/query.ts","../node_modules/@tanstack/query-core/src/queryCache.ts","../node_modules/@tanstack/query-core/src/mutation.ts","../node_modules/@tanstack/query-core/src/mutationCache.ts","../node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts","../node_modules/@tanstack/query-core/src/queryClient.ts","../node_modules/@tanstack/react-query/src/QueryClientProvider.tsx","../node_modules/@sop/ui-library/node_modules/tslib/tslib.es6.js","../../../../src/icons/LongArrowRight28.tsx","../node_modules/clsx/dist/clsx.mjs","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage.js","../node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@mui/utils/esm/deepmerge.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/system/esm/style.js","../node_modules/@mui/system/esm/merge.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/propsToClassKey.js","../node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/system/esm/colorManipulator.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/identifier.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/utils/esm/resolveProps.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/material/styles/useThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/utils/esm/useIsFocusVisible.js","../node_modules/@mui/material/utils/useIsFocusVisible.js","../node_modules/@mui/utils/esm/setRef.js","../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/material/Typography/typographyClasses.js","../node_modules/@mui/material/Typography/Typography.js","../node_modules/@mui/material/Link/linkClasses.js","../node_modules/@mui/material/Link/getTextDecoration.js","../node_modules/@mui/material/Link/Link.js","../../../../../src/components/Link/Link.styled.ts","../../../../../src/components/Link/Link.tsx","../../../../src/style/breakpoints.ts","../../../../src/style/mediaQueries.ts","../../../../../../src/style/components/Typography/index.ts","../../../../src/style/grid.ts","../../../../../src/components/Banner/Banner.styled.ts","../../../../src/style/overlay.ts","../../../../../src/components/Image/Image.styled.ts","../../../../../src/components/Image/Image.tsx","../../../../src/style/generateSrcSet.ts","../../../../../src/components/Banner/Banner.tsx","shared/internationalization/useTranslation.ts","shared/utils/utils.js","shared/utils/useIsMobile.ts","shared/utils/useIsTablet.ts","../node_modules/@iconify/react/dist/iconify.mjs","../../../../../src/components/Icon/Icon.styled.ts","../../../../../src/components/Icon/Icon.tsx","../../../../src/utils/settings.ts","../../../../../src/components/Section/Section.styled.ts","../../../../../src/components/Section/Section.tsx","../../../../../src/style/components/Page.ts","../../../../../src/components/Footer/Footer.styled.ts","../../../../src/icons/LogoSmallSolid56.tsx","../../../../../src/components/Footer/Footer.tsx","components/Footer/Footer.tsx","../node_modules/@mui/private-theming/useTheme/ThemeContext.js","../node_modules/@mui/private-theming/useTheme/useTheme.js","../node_modules/@mui/private-theming/ThemeProvider/nested.js","../node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","../node_modules/@mui/material/styles/ThemeProvider.js","../../../../src/style/colors.ts","../../../../../src/style/components/GlobalStyle.ts","../../../../src/style/settings.ts","../../../../src/hooks/useMaterialUIBaseTheme.ts","../../../../../src/components/Typography/Typography.styled.ts","../../../../../src/components/Typography/Typography.tsx","../../../../../src/style/components/NoBr.ts","../../../../src/utils/appendComponentWithNoBr.tsx","../node_modules/@mui/material/InputBase/utils.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../node_modules/@mui/material/FormHelperText/FormHelperText.js","../../../../src/icons/LongArrowRight35.tsx","../../../../../src/components/Button/Button.styled.ts","../../../../../src/components/Button/Button.tsx","../node_modules/@mui/utils/esm/useId/useId.js","../node_modules/@mui/base/utils/isHostComponent.js","../node_modules/@mui/base/utils/extractEventHandlers.js","../node_modules/@mui/base/utils/omitEventHandlers.js","../node_modules/@mui/base/utils/useSlotProps.js","../node_modules/@mui/base/utils/resolveComponentProps.js","../node_modules/@mui/base/utils/mergeSlotProps.js","../node_modules/@mui/base/utils/appendOwnerState.js","../node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../node_modules/@mui/utils/esm/createChainedFunction.js","../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../node_modules/@mui/utils/esm/getScrollbarSize.js","../node_modules/@mui/base/unstable_useModal/ModalManager.js","../node_modules/@mui/base/unstable_useModal/useModal.js","../node_modules/@mui/base/FocusTrap/FocusTrap.js","../node_modules/@mui/base/Portal/Portal.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/@mui/material/transitions/utils.js","../node_modules/@mui/material/Fade/Fade.js","../node_modules/@mui/material/Backdrop/backdropClasses.js","../node_modules/@mui/material/Backdrop/Backdrop.js","../node_modules/@mui/material/Modal/modalClasses.js","../node_modules/@mui/material/Modal/Modal.js","../node_modules/@mui/material/styles/getOverlayAlpha.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Paper/Paper.js","../node_modules/@mui/material/Dialog/dialogClasses.js","../node_modules/@mui/material/Dialog/DialogContext.js","../node_modules/@mui/material/Dialog/Dialog.js","../../../../../src/components/Dialog/Dialog.styled.ts","../../../../../src/components/Dialog/Dialog.tsx","../node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","../node_modules/@mui/material/DialogTitle/DialogTitle.js","../../../../../src/components/DialogTitle/DialogTitle.tsx","../node_modules/@mui/material/DialogContent/dialogContentClasses.js","../node_modules/@mui/material/DialogContent/DialogContent.js","../../../../../src/components/DialogContent/DialogContent.tsx","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/@mui/utils/esm/debounce/debounce.js","../node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js","../node_modules/@mui/material/utils/useEnhancedEffect.js","../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/InputBase/inputBaseClasses.js","../node_modules/@mui/material/InputBase/InputBase.js","../node_modules/@mui/material/Input/inputClasses.js","../node_modules/@mui/material/Input/Input.js","../node_modules/@mui/material/FilledInput/filledInputClasses.js","../node_modules/@mui/material/FilledInput/FilledInput.js","../node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/utils/ownerDocument.js","../node_modules/@mui/material/List/ListContext.js","../node_modules/@mui/material/List/listClasses.js","../node_modules/@mui/material/List/List.js","../node_modules/@mui/material/utils/getScrollbarSize.js","../node_modules/@mui/material/MenuList/MenuList.js","../node_modules/@mui/material/utils/debounce.js","../node_modules/@mui/material/utils/ownerWindow.js","../node_modules/@mui/material/Grow/Grow.js","../node_modules/@mui/material/Popover/popoverClasses.js","../node_modules/@mui/material/Popover/Popover.js","../node_modules/@mui/material/Menu/menuClasses.js","../node_modules/@mui/material/Menu/Menu.js","../node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../node_modules/@mui/material/utils/useControlled.js","../node_modules/@mui/utils/esm/useControlled/useControlled.js","../node_modules/@mui/material/Select/selectClasses.js","../node_modules/@mui/material/Select/SelectInput.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../node_modules/@mui/material/Select/Select.js","../node_modules/@mui/material/TextField/textFieldClasses.js","../node_modules/@mui/material/TextField/TextField.js","../../../../src/icons/Error28.tsx","../../../../../src/components/TextField/TextField.styled.ts","../../../../../src/components/TextField/TextField.tsx","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../../../../../src/components/DialogActions/DialogActions.tsx","components/Plus/BankIdDialog/BankIdDialog.interface.ts","components/Plus/QrCode/QrCode.tsx","shared/services/spPlusService.ts","../node_modules/@tanstack/query-core/src/queryObserver.ts","../node_modules/@tanstack/react-query/src/QueryErrorResetBoundary.tsx","../node_modules/@tanstack/react-query/src/isRestoring.ts","../node_modules/@tanstack/react-query/src/utils.ts","../node_modules/@tanstack/react-query/src/errorBoundaryUtils.ts","../node_modules/@tanstack/react-query/src/suspense.ts","../node_modules/@tanstack/react-query/src/useQuery.ts","../node_modules/@tanstack/react-query/src/useBaseQuery.ts","../../../../../src/components/Card/Card.styled.ts","../../../../../src/components/Card/Card.tsx","components/Plus/BankIdDialog/BankIdDialog.styled.ts","shared/router/router.constants.ts","../node_modules/@jonkoops/matomo-tracker-react/src/MatomoContext.tsx","../node_modules/@jonkoops/matomo-tracker-react/src/utils/useOutboundClickListener.tsx","../node_modules/@jonkoops/matomo-tracker-react/src/useMatomo.ts","components/Plus/BankIdDialog/BankIdDialog.tsx","components/Plus/SignUpDialog/SignUpDialog.tsx","../../../../../src/components/Container/Container.styled.ts","../../../../../src/components/Container/Container.tsx","../../../../src/icons/Check28.tsx","../../../../../src/components/BulletList/BulletList.styled.ts","../../../../src/icons/Ul28.tsx","../../../../../src/components/BulletList/BulletList.tsx","components/Plus/SpPlusBanner/SpPlusBanner.styled.ts","components/Plus/SpPlusBanner/SpPlusBanner.tsx","../node_modules/@mui/material/useMediaQuery/useMediaQuery.js","../../../../src/hooks/useBreakpoint.ts","../../../../../src/components/Watermark/Watermark.styled.ts","../../../../../src/components/Watermark/Watermark.tsx","../../../../../src/components/PageCard/PageCard.styled.ts","../../../../../src/components/PageCard/PageCard.tsx","../../../../../src/components/PageCardSection/PageCardSection.styled.ts","../../../../../src/components/PageCardSection/PageCardSection.tsx","security/permissions.tsx","components/MyServices/MyServices.tsx","../../../../src/icons/External28.tsx","../../../../../src/components/ImageSection/ImageSection.styled.ts","../../../../src/icons/Document28.tsx","../../../../../src/components/Document/Document.styled.ts","../../../../../src/components/Document/Document.tsx","../../../../../src/components/FactBox/FactBox.styled.ts","../../../../../src/components/Phone/Phone.styled.ts","../../../../src/icons/Phone28.tsx","../../../../../src/components/Phone/Phone.tsx","../../../../../src/components/Email/Email.styled.ts","../../../../src/icons/Mail28.tsx","../../../../../src/components/Email/Email.tsx","../../../../../src/components/FactBox/FactBox.tsx","../../../../../src/components/FactBoxSection/FactBoxSection.styled.ts","../../../../../src/components/FactBoxSection/FactBoxSection.tsx","components/MyInformation/MyInformation.tsx","hooks/useCustomerInfo.ts","../node_modules/@tanstack/query-core/src/mutationObserver.ts","../node_modules/@mui/base/ClickAwayListener/ClickAwayListener.js","../node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js","../node_modules/@mui/material/SnackbarContent/SnackbarContent.js","../node_modules/@mui/material/Snackbar/snackbarClasses.js","../node_modules/@mui/material/Snackbar/Snackbar.js","../node_modules/@mui/base/useSnackbar/useSnackbar.js","../../../../../src/components/Snackbar/Snackbar.styled.ts","../../../../../src/components/Snackbar/Snackbar.tsx","../node_modules/@mui/material/Alert/alertClasses.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/IconButton/iconButtonClasses.js","../node_modules/@mui/material/IconButton/IconButton.js","../node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Alert/Alert.js","../../../../../src/components/Alert/Alert.styled.ts","../../../../src/icons/Information28.tsx","../../../../../src/components/Alert/Alert.tsx","../node_modules/@mui/material/AlertTitle/alertTitleClasses.js","../node_modules/@mui/material/AlertTitle/AlertTitle.js","../../../../../src/components/AlertTitle/AlertTitle.styled.ts","../../../../../src/components/AlertTitle/AlertTitle.tsx","components/Plus/Snackbar/Snackbar.tsx","components/Plus/ContactInformationDialog/ContactInformationDialog.tsx","../node_modules/@tanstack/react-query/src/useMutation.ts","components/Dashboard/Dashboard.tsx","shared/services/unifyService.ts","../node_modules/@jonkoops/matomo-tracker/src/constants.ts","../node_modules/@jonkoops/matomo-tracker/src/MatomoTracker.ts","../node_modules/@jonkoops/matomo-tracker/src/index.ts","../node_modules/@jonkoops/matomo-tracker-react/src/instance.ts","../node_modules/@jonkoops/matomo-tracker-react/src/MatomoProvider.tsx","components/MatomoWrapper/MatomoWrapper.tsx","shared/usersnap/userSnapContext.js","App.tsx","shared/localStorage/storage.ts","shared/analytics/matomo.ts","../../../../../src/components/CallToAction/CallToAction.styled.ts","../../../../../src/components/CallToAction/CallToAction.tsx","../../../../../src/components/Hero/Hero.styled.ts","../../../../../src/components/Hero/Hero.tsx","components/ErrorPage/ErrorPage.tsx","shared/router/router.tsx","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Black_Web.woff","../../../../src/style/fonts.ts","../node_modules/@sop/ui-library/src/style/fonts/Whitney-LightItal_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-LightItal_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Light_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Light_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Book_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Book_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-BookItal_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-BookItal_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-MediumItal_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-MediumItal_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Medium_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Medium_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-SemibldItal_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-SemibldItal_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Semibld_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Semibld_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Bold_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Bold_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-BoldItal_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-BoldItal_Web.woff","../node_modules/@sop/ui-library/src/style/fonts/Whitney-Black_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-BlackItal_Web.woff2","../node_modules/@sop/ui-library/src/style/fonts/Whitney-BlackItal_Web.woff","../../../../../src/style/components/WhitneyFont.ts","../../../../src/icons/LogoSmallDefault42.tsx","components/Menu/TopMenu/TopMenu.styled.ts","../../../../src/icons/Menu28.tsx","components/Menu/TopMenu/TopMenu.tsx","../node_modules/@mui/material/Slide/Slide.js","../node_modules/@mui/material/Drawer/drawerClasses.js","../node_modules/@mui/material/Drawer/Drawer.js","../../../../../src/components/Drawer/Drawer.styled.ts","../../../../../src/components/Drawer/Drawer.tsx","../../../../src/icons/LogoDefault56.tsx","../../../../../src/components/List/List.styled.ts","../../../../../src/components/List/List.tsx","../node_modules/@mui/material/ListItem/listItemClasses.js","../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../node_modules/@mui/material/ListItem/ListItem.js","../../../../../src/components/ListItem/ListItem.styled.ts","../../../../../src/components/ListItem/ListItem.tsx","../node_modules/@mui/material/ListItemButton/ListItemButton.js","../../../../../src/components/ListItemButton/ListItemButton.styled.ts","../../../../../src/components/ListItemButton/ListItemButton.tsx","../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../node_modules/@mui/material/ListItemIcon/ListItemIcon.js","../../../../../src/components/ListItemIcon/ListItemIcon.styled.ts","../../../../../src/components/ListItemIcon/ListItemIcon.tsx","../../../../src/icons/Home28.tsx","../node_modules/@mui/material/ListItemText/listItemTextClasses.js","../node_modules/@mui/material/ListItemText/ListItemText.js","../../../../../src/components/ListItemText/ListItemText.styled.ts","../../../../../src/components/ListItemText/ListItemText.tsx","../node_modules/@mui/material/Divider/dividerClasses.js","../node_modules/@mui/material/Divider/Divider.js","../../../../../src/components/Divider/Divider.styled.ts","../../../../../src/components/Divider/Divider.tsx","../../../../src/icons/Wealth28.tsx","../../../../src/icons/Pension28.tsx","../../../../src/icons/Insurance28.tsx","../../../../src/icons/Hr28.tsx","../../../../src/icons/Benefits28.tsx","components/Menu/LeftMenu/LeftMenu.styled.ts","../../../../src/icons/Globe28.tsx","components/Menu/LanguageChooser/LanguageChooser.styled.ts","components/Menu/LanguageChooser/LanguageChooser.tsx","components/Menu/LeftMenu/LeftMenu.tsx","components/Menu/Menu.styled.ts","components/Menu/PlusTopBanner/PlusTopBanner.styled.ts","components/Menu/PlusTopBanner/PlusTopBanner.tsx","components/Menu/Menu.tsx","index.tsx"],"sourcesContent":["import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n return time >= startTime && time <= endTime;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n if (_typeof(values) !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n var date = toDate(dirtyDate);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function (x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x) {\n return x;\n };\n}\n\nif (!apply) {\n apply = function (fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!construct) {\n construct = function (Func, args) {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param {Function} func - The function to be wrapped and called.\n * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param {Function} func - The constructor function to be wrapped and called.\n * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n return (...args) => construct(func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param {Object} set - The set to which elements will be added.\n * @param {Array} array - The array containing elements to be added to the set.\n * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns {Object} The modified set with added elements.\n */\nfunction addToSet(set, array, transformCaseFunc = stringToLowerCase) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param {Array} array - The array to be cleaned.\n * @returns {Array} The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param {Object} object - The object to be cloned.\n * @returns {Object} A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param {Object} object - The object to look up the getter function in its prototype chain.\n * @param {String} prop - The property name for which to find the getter function.\n * @returns {Function} The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue() {\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n objectHasOwnProperty,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'section',\n 'select',\n 'shadow',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n]);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n]);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n]);\n\nexport const text = freeze(['#text']);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'wrap',\n 'xmlns',\n 'slot',\n]);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n]);\n","import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n","import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayPop,\n arrayPush,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n create,\n objectHasOwnProperty,\n} from './utils.js';\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5, // Deprecated\n entityNode: 6, // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12, // Deprecated\n};\n\nconst getGlobal = function () {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, purifyHostElement) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n const DOMPurify = (root) => createDOMPurify(root);\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = VERSION;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (\n !window ||\n !window.document ||\n window.document.nodeType !== NODE_TYPE.document\n ) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg = {}) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : {};\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : {};\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n ? cfg.USE_PROFILES\n : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n const HTML_INTEGRATION_POINTS = addToSet({}, [\n 'foreignobject',\n 'annotation-xml',\n ]);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element) {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n const _forceRemove = function (node) {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n const _removeAttribute = function (name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node,\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '' +\n dirty +\n '';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param {Node} root The root element or node to start traversing on.\n * @return {NodeIterator} The created NodeIterator\n */\n const _createNodeIterator = function (root) {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null\n );\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n const _isClobbered = function (elm) {\n return (\n elm instanceof HTMLFormElement &&\n (typeof elm.nodeName !== 'string' ||\n typeof elm.textContent !== 'string' ||\n typeof elm.removeChild !== 'function' ||\n !(elm.attributes instanceof NamedNodeMap) ||\n typeof elm.removeAttribute !== 'function' ||\n typeof elm.setAttribute !== 'function' ||\n typeof elm.namespaceURI !== 'string' ||\n typeof elm.insertBefore !== 'function' ||\n typeof elm.hasChildNodes !== 'function')\n );\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param {Node} object object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n const _isNode = function (object) {\n return typeof Node === 'function' && object instanceof Node;\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n const _executeHook = function (entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], (hook) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode) {\n let content = null;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any ocurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (\n SAFE_FOR_XML &&\n currentNode.nodeType === NODE_TYPE.comment &&\n regExpTest(/<[/\\w]/g, currentNode.data)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param {string} tagName name of the tag of the node to sanitize\n * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode) {\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} cfg object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (\n importedNode.nodeType === NODE_TYPE.element &&\n importedNode.nodeName === 'BODY'\n ) {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {String} tag Tag name of containing element.\n * @param {String} attr Attribute name.\n * @param {String} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","/**\n * @license Highstock JS v10.3.3 (2023-01-20)\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function (root, factory) {\n if (typeof module === 'object' && module.exports) {\n factory['default'] = factory;\n module.exports = root.document ?\n factory(root) :\n factory;\n } else if (typeof define === 'function' && define.amd) {\n define('highcharts/highstock', function () {\n return factory(root);\n });\n } else {\n if (root.Highcharts) {\n root.Highcharts.error(16, true);\n }\n root.Highcharts = factory(root);\n }\n}(typeof window !== 'undefined' ? window : this, function (window) {\n 'use strict';\n var _modules = {};\n function _registerModule(obj, path, args, fn) {\n if (!obj.hasOwnProperty(path)) {\n obj[path] = fn.apply(null, args);\n\n if (typeof CustomEvent === 'function') {\n window.dispatchEvent(\n new CustomEvent(\n 'HighchartsModuleLoaded',\n { detail: { path: path, module: obj[path] }\n })\n );\n }\n }\n }\n _registerModule(_modules, 'Core/Globals.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n /**\n * Shared Highcharts properties.\n * @private\n */\n var Globals;\n (function (Globals) {\n /* *\n *\n * Constants\n *\n * */\n Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '10.3.3', Globals.win = (typeof window !== 'undefined' ?\n window :\n {}), // eslint-disable-line node/no-unsupported-features/es-builtins\n Globals.doc = Globals.win.document, Globals.svg = (Globals.doc &&\n Globals.doc.createElementNS &&\n !!Globals.doc.createElementNS(Globals.SVG_NS, 'svg').createSVGRect), Globals.userAgent = (Globals.win.navigator && Globals.win.navigator.userAgent) || '', Globals.isChrome = Globals.userAgent.indexOf('Chrome') !== -1, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.hasBidiBug = (Globals.isFirefox &&\n parseInt(Globals.userAgent.split('Firefox/')[1], 10) < 4 // issue #38\n ), Globals.hasTouch = !!Globals.win.TouchEvent, Globals.marginNames = [\n 'plotTop',\n 'marginRight',\n 'marginBottom',\n 'plotLeft'\n ], Globals.noop = function () { }, Globals.supportsPassiveEvents = (function () {\n // Checks whether the browser supports passive events, (#11353).\n var supportsPassive = false;\n // Object.defineProperty doesn't work on IE as well as passive\n // events - instead of using polyfill, we can exclude IE totally.\n if (!Globals.isMS) {\n var opts = Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n }\n });\n if (Globals.win.addEventListener && Globals.win.removeEventListener) {\n Globals.win.addEventListener('testPassive', Globals.noop, opts);\n Globals.win.removeEventListener('testPassive', Globals.noop, opts);\n }\n }\n return supportsPassive;\n }());\n /**\n * An array containing the current chart objects in the page. A chart's\n * position in the array is preserved throughout the page's lifetime. When\n * a chart is destroyed, the array item becomes `undefined`.\n *\n * @name Highcharts.charts\n * @type {Array}\n */\n Globals.charts = [];\n /**\n * A hook for defining additional date format specifiers. New\n * specifiers are defined as key-value pairs by using the\n * specifier as key, and a function which takes the timestamp as\n * value. This function returns the formatted portion of the\n * date.\n *\n * @sample highcharts/global/dateformats/\n * Adding support for week number\n *\n * @name Highcharts.dateFormats\n * @type {Record}\n */\n Globals.dateFormats = {};\n /**\n * @private\n * @deprecated\n * @todo Use only `Core/Series/SeriesRegistry.seriesTypes`\n */\n Globals.seriesTypes = {};\n /**\n * @private\n */\n Globals.symbolSizes = {};\n /* *\n *\n * Properties\n *\n * */\n // eslint-disable-next-line prefer-const\n Globals.chartCount = 0;\n })(Globals || (Globals = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Theme options that should get applied to the chart. In module mode it\n * might not be possible to change this property because of read-only\n * restrictions, instead use {@link Highcharts.setOptions}.\n *\n * @deprecated\n * @name Highcharts.theme\n * @type {Highcharts.Options}\n */\n (''); // keeps doclets above in JS file\n\n return Globals;\n });\n _registerModule(_modules, 'Core/Utilities.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n doc = H.doc,\n win = H.win;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Provide error messages for debugging, with links to online explanation. This\n * function can be overridden to provide custom error handling.\n *\n * @sample highcharts/chart/highcharts-error/\n * Custom error handler\n *\n * @function Highcharts.error\n *\n * @param {number|string} code\n * The error code. See\n * [errors.xml](https://github.com/highcharts/highcharts/blob/master/errors/errors.xml)\n * for available codes. If it is a string, the error message is printed\n * directly in the console.\n *\n * @param {boolean} [stop=false]\n * Whether to throw an error or just log a warning in the console.\n *\n * @param {Highcharts.Chart} [chart]\n * Reference to the chart that causes the error. Used in 'debugger'\n * module to display errors directly on the chart.\n * Important note: This argument is undefined for errors that lack\n * access to the Chart instance. In such case, the error will be\n * displayed on the last created chart.\n *\n * @param {Highcharts.Dictionary} [params]\n * Additional parameters for the generated message.\n *\n * @return {void}\n */\n function error(code, stop, chart, params) {\n var severity = stop ? 'Highcharts error' : 'Highcharts warning';\n if (code === 32) {\n code = \"\" + severity + \": Deprecated member\";\n }\n var isCode = isNumber(code);\n var message = isCode ?\n \"\" + severity + \" #\" + code + \": www.highcharts.com/errors/\" + code + \"/\" :\n code.toString();\n var defaultHandler = function () {\n if (stop) {\n throw new Error(message);\n }\n // else ...\n if (win.console &&\n error.messages.indexOf(message) === -1 // prevent console flooting\n ) {\n console.warn(message); // eslint-disable-line no-console\n }\n };\n if (typeof params !== 'undefined') {\n var additionalMessages_1 = '';\n if (isCode) {\n message += '?';\n }\n objectEach(params, function (value, key) {\n additionalMessages_1 += \"\\n - \".concat(key, \": \").concat(value);\n if (isCode) {\n message += encodeURI(key) + '=' + encodeURI(value);\n }\n });\n message += additionalMessages_1;\n }\n fireEvent(H, 'displayError', { chart: chart, code: code, message: message, params: params }, defaultHandler);\n error.messages.push(message);\n }\n (function (error) {\n error.messages = [];\n })(error || (error = {}));\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to deep merge two or more objects and return a third object.\n * If the first argument is true, the contents of the second object is copied\n * into the first object. The merge function can also be used with a single\n * object argument to create a deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {boolean} extend\n * Whether to extend the left-side object (a) or return a whole new\n * object.\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */ /**\n * Utility function to deep merge two or more objects and return a third object.\n * The merge function can also be used with a single object argument to create a\n * deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */\n function merge() {\n /* eslint-enable valid-jsdoc */\n var i,\n args = arguments,\n ret = {};\n var doCopy = function (copy,\n original) {\n // An object is replacing a primitive\n if (typeof copy !== 'object') {\n copy = {};\n }\n objectEach(original, function (value, key) {\n // Prototype pollution (#14883)\n if (key === '__proto__' || key === 'constructor') {\n return;\n }\n // Copy the contents of objects, but not arrays or DOM nodes\n if (isObject(value, true) &&\n !isClass(value) &&\n !isDOMElement(value)) {\n copy[key] = doCopy(copy[key] || {}, value);\n // Primitives and arrays are copied over directly\n }\n else {\n copy[key] = original[key];\n }\n });\n return copy;\n };\n // If first argument is true, copy into the existing object. Used in\n // setOptions.\n if (args[0] === true) {\n ret = args[1];\n args = Array.prototype.slice.call(args, 2);\n }\n // For each argument, extend the return\n var len = args.length;\n for (i = 0; i < len; i++) {\n ret = doCopy(ret, args[i]);\n }\n return ret;\n }\n /**\n * Constrain a value to within a lower and upper threshold.\n *\n * @private\n * @param {number} value The initial value\n * @param {number} min The lower threshold\n * @param {number} max The upper threshold\n * @return {number} Returns a number value within min and max.\n */\n function clamp(value, min, max) {\n return value > min ? value < max ? value : max : min;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Remove settings that have not changed, to avoid unnecessary rendering or\n * computing (#9197).\n * @private\n */\n function cleanRecursively(newer, older) {\n var result = {};\n objectEach(newer, function (_val, key) {\n var ob;\n // Dive into objects (except DOM nodes)\n if (isObject(newer[key], true) &&\n !newer.nodeType && // #10044\n older[key]) {\n ob = cleanRecursively(newer[key], older[key]);\n if (Object.keys(ob).length) {\n result[key] = ob;\n }\n // Arrays, primitives and DOM nodes are copied directly\n }\n else if (isObject(newer[key]) ||\n newer[key] !== older[key] ||\n // If the newer key is explicitly undefined, keep it (#10525)\n (key in newer && !(key in older))) {\n result[key] = newer[key];\n }\n });\n return result;\n }\n /**\n * Shortcut for parseInt\n *\n * @private\n * @function Highcharts.pInt\n *\n * @param {*} s\n * any\n *\n * @param {number} [mag]\n * Magnitude\n *\n * @return {number}\n * number\n */\n function pInt(s, mag) {\n return parseInt(s, mag || 10);\n }\n /**\n * Utility function to check for string type.\n *\n * @function Highcharts.isString\n *\n * @param {*} s\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a string.\n */\n function isString(s) {\n return typeof s === 'string';\n }\n /**\n * Utility function to check if an item is an array.\n *\n * @function Highcharts.isArray\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is an array.\n */\n function isArray(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Array]' || str === '[object Array Iterator]';\n }\n /**\n * Utility function to check if an item is of type object.\n *\n * @function Highcharts.isObject\n *\n * @param {*} obj\n * The item to check.\n *\n * @param {boolean} [strict=false]\n * Also checks that the object is not an array.\n *\n * @return {boolean}\n * True if the argument is an object.\n */\n function isObject(obj, strict) {\n return (!!obj &&\n typeof obj === 'object' &&\n (!strict || !isArray(obj))); // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n /**\n * Utility function to check if an Object is a HTML Element.\n *\n * @function Highcharts.isDOMElement\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a HTML Element.\n */\n function isDOMElement(obj) {\n return isObject(obj) && typeof obj.nodeType === 'number';\n }\n /**\n * Utility function to check if an Object is a class.\n *\n * @function Highcharts.isClass\n *\n * @param {object|undefined} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a class.\n */\n function isClass(obj) {\n var c = obj && obj.constructor;\n return !!(isObject(obj, true) &&\n !isDOMElement(obj) &&\n (c && c.name && c.name !== 'Object'));\n }\n /**\n * Utility function to check if an item is a number and it is finite (not NaN,\n * Infinity or -Infinity).\n *\n * @function Highcharts.isNumber\n *\n * @param {*} n\n * The item to check.\n *\n * @return {boolean}\n * True if the item is a finite number\n */\n function isNumber(n) {\n return typeof n === 'number' && !isNaN(n) && n < Infinity && n > -Infinity;\n }\n /**\n * Remove the last occurence of an item from an array.\n *\n * @function Highcharts.erase\n *\n * @param {Array<*>} arr\n * The array.\n *\n * @param {*} item\n * The item to remove.\n *\n * @return {void}\n */\n function erase(arr, item) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === item) {\n arr.splice(i, 1);\n break;\n }\n }\n }\n /**\n * Check if an object is null or undefined.\n *\n * @function Highcharts.defined\n *\n * @param {*} obj\n * The object to check.\n *\n * @return {boolean}\n * False if the object is null or undefined, otherwise true.\n */\n function defined(obj) {\n return typeof obj !== 'undefined' && obj !== null;\n }\n /**\n * Set or get an attribute or an object of attributes.\n *\n * To use as a setter, pass a key and a value, or let the second argument be a\n * collection of keys and values. When using a collection, passing a value of\n * `null` or `undefined` will remove the attribute.\n *\n * To use as a getter, pass only a string as the second argument.\n *\n * @function Highcharts.attr\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} elem\n * The DOM element to receive the attribute(s).\n *\n * @param {string|Highcharts.HTMLAttributes|Highcharts.SVGAttributes} [keyOrAttribs]\n * The property or an object of key-value pairs.\n *\n * @param {number|string} [value]\n * The value if a single property is set.\n *\n * @return {string|null|undefined}\n * When used as a getter, return the value.\n */\n function attr(elem, keyOrAttribs, value) {\n var isGetter = isString(keyOrAttribs) && !defined(value);\n var ret;\n var attrSingle = function (value,\n key) {\n // Set the value\n if (defined(value)) {\n elem.setAttribute(key,\n value);\n // Get the value\n }\n else if (isGetter) {\n ret = elem.getAttribute(key);\n // IE7 and below cannot get class through getAttribute (#7850)\n if (!ret && key === 'class') {\n ret = elem.getAttribute(key + 'Name');\n }\n // Remove the value\n }\n else {\n elem.removeAttribute(key);\n }\n };\n // If keyOrAttribs is a string\n if (isString(keyOrAttribs)) {\n attrSingle(value, keyOrAttribs);\n // Else if keyOrAttribs is defined, it is a hash of key/value pairs\n }\n else {\n objectEach(keyOrAttribs, attrSingle);\n }\n return ret;\n }\n /**\n * Check if an element is an array, and if not, make it into an array.\n *\n * @function Highcharts.splat\n *\n * @param {*} obj\n * The object to splat.\n *\n * @return {Array}\n * The produced or original array.\n */\n function splat(obj) {\n return isArray(obj) ? obj : [obj];\n }\n /**\n * Set a timeout if the delay is given, otherwise perform the function\n * synchronously.\n *\n * @function Highcharts.syncTimeout\n *\n * @param {Function} fn\n * The function callback.\n *\n * @param {number} delay\n * Delay in milliseconds.\n *\n * @param {*} [context]\n * An optional context to send to the function callback.\n *\n * @return {number}\n * An identifier for the timeout that can later be cleared with\n * Highcharts.clearTimeout. Returns -1 if there is no timeout.\n */\n function syncTimeout(fn, delay, context) {\n if (delay > 0) {\n return setTimeout(fn, delay, context);\n }\n fn.call(0, context);\n return -1;\n }\n /**\n * Internal clear timeout. The function checks that the `id` was not removed\n * (e.g. by `chart.destroy()`). For the details see\n * [issue #7901](https://github.com/highcharts/highcharts/issues/7901).\n *\n * @function Highcharts.clearTimeout\n *\n * @param {number|undefined} id\n * Id of a timeout.\n */\n function internalClearTimeout(id) {\n if (defined(id)) {\n clearTimeout(id);\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to extend an object with the members of another.\n *\n * @function Highcharts.extend\n *\n * @param {T|undefined} a\n * The object to be extended.\n *\n * @param {Partial} b\n * The object to add to the first one.\n *\n * @return {T}\n * Object a, the original object.\n */\n function extend(a, b) {\n /* eslint-enable valid-jsdoc */\n var n;\n if (!a) {\n a = {};\n }\n for (n in b) { // eslint-disable-line guard-for-in\n a[n] = b[n];\n }\n return a;\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Return the first value that is not null or undefined.\n *\n * @function Highcharts.pick\n *\n * @param {...Array} items\n * Variable number of arguments to inspect.\n *\n * @return {T}\n * The value of the first argument that is not null or undefined.\n */\n function pick() {\n var args = arguments;\n var length = args.length;\n for (var i = 0; i < length; i++) {\n var arg = args[i];\n if (typeof arg !== 'undefined' && arg !== null) {\n return arg;\n }\n }\n }\n /**\n * Set CSS on a given element.\n *\n * @function Highcharts.css\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} el\n * An HTML DOM element.\n *\n * @param {Highcharts.CSSObject} styles\n * Style object with camel case property names.\n *\n * @return {void}\n */\n function css(el, styles) {\n if (H.isMS && !H.svg) { // #2686\n if (styles && defined(styles.opacity)) {\n styles.filter = \"alpha(opacity=\".concat(styles.opacity * 100, \")\");\n }\n }\n extend(el.style, styles);\n }\n /**\n * Utility function to create an HTML element with attributes and styles.\n *\n * @function Highcharts.createElement\n *\n * @param {string} tag\n * The HTML tag.\n *\n * @param {Highcharts.HTMLAttributes} [attribs]\n * Attributes as an object of key-value pairs.\n *\n * @param {Highcharts.CSSObject} [styles]\n * Styles as an object of key-value pairs.\n *\n * @param {Highcharts.HTMLDOMElement} [parent]\n * The parent HTML object.\n *\n * @param {boolean} [nopad=false]\n * If true, remove all padding, border and margin.\n *\n * @return {Highcharts.HTMLDOMElement}\n * The created DOM element.\n */\n function createElement(tag, attribs, styles, parent, nopad) {\n var el = doc.createElement(tag);\n if (attribs) {\n extend(el, attribs);\n }\n if (nopad) {\n css(el, { padding: '0', border: 'none', margin: '0' });\n }\n if (styles) {\n css(el, styles);\n }\n if (parent) {\n parent.appendChild(el);\n }\n return el;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Extend a prototyped class by new members.\n *\n * @function Highcharts.extendClass\n *\n * @param {Highcharts.Class} parent\n * The parent prototype to inherit.\n *\n * @param {Highcharts.Dictionary<*>} members\n * A collection of prototype members to add or override compared to the\n * parent prototype.\n *\n * @return {Highcharts.Class}\n * A new prototype.\n */\n function extendClass(parent, members) {\n var obj = (function () { });\n obj.prototype = new parent(); // eslint-disable-line new-cap\n extend(obj.prototype, members);\n return obj;\n }\n /**\n * Left-pad a string to a given length by adding a character repetitively.\n *\n * @function Highcharts.pad\n *\n * @param {number} number\n * The input string or number.\n *\n * @param {number} [length]\n * The desired string length.\n *\n * @param {string} [padder=0]\n * The character to pad with.\n *\n * @return {string}\n * The padded string.\n */\n function pad(number, length, padder) {\n return new Array((length || 2) +\n 1 -\n String(number)\n .replace('-', '')\n .length).join(padder || '0') + number;\n }\n /**\n * Return a length based on either the integer value, or a percentage of a base.\n *\n * @function Highcharts.relativeLength\n *\n * @param {Highcharts.RelativeSize} value\n * A percentage string or a number.\n *\n * @param {number} base\n * The full length that represents 100%.\n *\n * @param {number} [offset=0]\n * A pixel offset to apply for percentage values. Used internally in\n * axis positioning.\n *\n * @return {number}\n * The computed length.\n */\n function relativeLength(value, base, offset) {\n return (/%$/).test(value) ?\n (base * parseFloat(value) / 100) + (offset || 0) :\n parseFloat(value);\n }\n /**\n * Wrap a method with extended functionality, preserving the original function.\n *\n * @function Highcharts.wrap\n *\n * @param {*} obj\n * The context object that the method belongs to. In real cases, this is\n * often a prototype.\n *\n * @param {string} method\n * The name of the method to extend.\n *\n * @param {Highcharts.WrapProceedFunction} func\n * A wrapper function callback. This function is called with the same\n * arguments as the original function, except that the original function\n * is unshifted and passed as the first argument.\n */\n function wrap(obj, method, func) {\n var proceed = obj[method];\n obj[method] = function () {\n var outerArgs = arguments,\n scope = this;\n return func.apply(this, [\n function () {\n return proceed.apply(scope, arguments.length ? arguments : outerArgs);\n }\n ].concat([].slice.call(arguments)));\n };\n }\n /**\n * Get the magnitude of a number.\n *\n * @function Highcharts.getMagnitude\n *\n * @param {number} num\n * The number.\n *\n * @return {number}\n * The magnitude, where 1-9 are magnitude 1, 10-99 magnitude 2 etc.\n */\n function getMagnitude(num) {\n return Math.pow(10, Math.floor(Math.log(num) / Math.LN10));\n }\n /**\n * Take an interval and normalize it to multiples of round numbers.\n *\n * @deprecated\n * @function Highcharts.normalizeTickInterval\n *\n * @param {number} interval\n * The raw, un-rounded interval.\n *\n * @param {Array<*>} [multiples]\n * Allowed multiples.\n *\n * @param {number} [magnitude]\n * The magnitude of the number.\n *\n * @param {boolean} [allowDecimals]\n * Whether to allow decimals.\n *\n * @param {boolean} [hasTickAmount]\n * If it has tickAmount, avoid landing on tick intervals lower than\n * original.\n *\n * @return {number}\n * The normalized interval.\n *\n * @todo\n * Move this function to the Axis prototype. It is here only for historical\n * reasons.\n */\n function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {\n var i,\n retInterval = interval;\n // round to a tenfold of 1, 2, 2.5 or 5\n magnitude = pick(magnitude, getMagnitude(interval));\n var normalized = interval / magnitude;\n // multiples for a linear scale\n if (!multiples) {\n multiples = hasTickAmount ?\n // Finer grained ticks when the tick amount is hard set, including\n // when alignTicks is true on multiple axes (#4580).\n [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] :\n // Else, let ticks fall on rounder numbers\n [1, 2, 2.5, 5, 10];\n // the allowDecimals option\n if (allowDecimals === false) {\n if (magnitude === 1) {\n multiples = multiples.filter(function (num) {\n return num % 1 === 0;\n });\n }\n else if (magnitude <= 0.1) {\n multiples = [1 / magnitude];\n }\n }\n }\n // normalize the interval to the nearest multiple\n for (i = 0; i < multiples.length; i++) {\n retInterval = multiples[i];\n // only allow tick amounts smaller than natural\n if ((hasTickAmount &&\n retInterval * magnitude >= interval) ||\n (!hasTickAmount &&\n (normalized <=\n (multiples[i] +\n (multiples[i + 1] || multiples[i])) / 2))) {\n break;\n }\n }\n // Multiply back to the correct magnitude. Correct floats to appropriate\n // precision (#6085).\n retInterval = correctFloat(retInterval * magnitude, -Math.round(Math.log(0.001) / Math.LN10));\n return retInterval;\n }\n /**\n * Sort an object array and keep the order of equal items. The ECMAScript\n * standard does not specify the behaviour when items are equal.\n *\n * @function Highcharts.stableSort\n *\n * @param {Array<*>} arr\n * The array to sort.\n *\n * @param {Function} sortFunction\n * The function to sort it with, like with regular Array.prototype.sort.\n */\n function stableSort(arr, sortFunction) {\n // @todo It seems like Chrome since v70 sorts in a stable way internally,\n // plus all other browsers do it, so over time we may be able to remove this\n // function\n var length = arr.length;\n var sortValue,\n i;\n // Add index to each item\n for (i = 0; i < length; i++) {\n arr[i].safeI = i; // stable sort index\n }\n arr.sort(function (a, b) {\n sortValue = sortFunction(a, b);\n return sortValue === 0 ? a.safeI - b.safeI : sortValue;\n });\n // Remove index from items\n for (i = 0; i < length; i++) {\n delete arr[i].safeI; // stable sort index\n }\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.min` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMin\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The lowest number.\n */\n function arrayMin(data) {\n var i = data.length,\n min = data[0];\n while (i--) {\n if (data[i] < min) {\n min = data[i];\n }\n }\n return min;\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.max` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMax\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The highest number.\n */\n function arrayMax(data) {\n var i = data.length,\n max = data[0];\n while (i--) {\n if (data[i] > max) {\n max = data[i];\n }\n }\n return max;\n }\n /**\n * Utility method that destroys any SVGElement instances that are properties on\n * the given object. It loops all properties and invokes destroy if there is a\n * destroy method. The property is then delete.\n *\n * @function Highcharts.destroyObjectProperties\n *\n * @param {*} obj\n * The object to destroy properties on.\n *\n * @param {*} [except]\n * Exception, do not destroy this property, only delete it.\n */\n function destroyObjectProperties(obj, except) {\n objectEach(obj, function (val, n) {\n // If the object is non-null and destroy is defined\n if (val && val !== except && val.destroy) {\n // Invoke the destroy\n val.destroy();\n }\n // Delete the property from the object.\n delete obj[n];\n });\n }\n /**\n * Discard a HTML element\n *\n * @function Highcharts.discardElement\n *\n * @param {Highcharts.HTMLDOMElement} element\n * The HTML node to discard.\n */\n function discardElement(element) {\n if (element && element.parentElement) {\n element.parentElement.removeChild(element);\n }\n }\n /**\n * Fix JS round off float errors.\n *\n * @function Highcharts.correctFloat\n *\n * @param {number} num\n * A float number to fix.\n *\n * @param {number} [prec=14]\n * The precision.\n *\n * @return {number}\n * The corrected float number.\n */\n function correctFloat(num, prec) {\n // When the number is higher than 1e14 use the number (#16275)\n return num > 1e14 ? num : parseFloat(num.toPrecision(prec || 14));\n }\n /**\n * The time unit lookup\n *\n * @ignore\n */\n var timeUnits = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 24 * 3600000,\n week: 7 * 24 * 3600000,\n month: 28 * 24 * 3600000,\n year: 364 * 24 * 3600000\n };\n /**\n * Easing definition\n *\n * @private\n * @function Math.easeInOutSine\n *\n * @param {number} pos\n * Current position, ranging from 0 to 1.\n *\n * @return {number}\n * Ease result\n */\n Math.easeInOutSine = function (pos) {\n return -0.5 * (Math.cos(Math.PI * pos) - 1);\n };\n /**\n * Returns the value of a property path on a given object.\n *\n * @private\n * @function getNestedProperty\n *\n * @param {string} path\n * Path to the property, for example `custom.myValue`.\n *\n * @param {unknown} obj\n * Instance containing the property on the specific path.\n *\n * @return {unknown}\n * The unknown property value.\n */\n function getNestedProperty(path, parent) {\n var pathElements = path.split('.');\n while (pathElements.length && defined(parent)) {\n var pathElement = pathElements.shift();\n // Filter on the key\n if (typeof pathElement === 'undefined' ||\n pathElement === '__proto__') {\n return; // undefined\n }\n var child = parent[pathElement];\n // Filter on the child\n if (!defined(child) ||\n typeof child === 'function' ||\n typeof child.nodeType === 'number' ||\n child === win) {\n return; // undefined\n }\n // Else, proceed\n parent = child;\n }\n return parent;\n }\n /**\n * Get the computed CSS value for given element and property, only for numerical\n * properties. For width and height, the dimension of the inner box (excluding\n * padding) is returned. Used for fitting the chart within the container.\n *\n * @function Highcharts.getStyle\n *\n * @param {Highcharts.HTMLDOMElement} el\n * An HTML element.\n *\n * @param {string} prop\n * The property name.\n *\n * @param {boolean} [toInt=true]\n * Parse to integer.\n *\n * @return {number|string|undefined}\n * The style value.\n */\n function getStyle(el, prop, toInt) {\n var customGetStyle = (H.getStyle || // oldie getStyle\n getStyle);\n var style;\n // For width and height, return the actual inner pixel size (#4913)\n if (prop === 'width') {\n var offsetWidth = Math.min(el.offsetWidth,\n el.scrollWidth);\n // In flex boxes, we need to use getBoundingClientRect and floor it,\n // because scrollWidth doesn't support subpixel precision (#6427) ...\n var boundingClientRectWidth = el.getBoundingClientRect &&\n el.getBoundingClientRect().width;\n // ...unless if the containing div or its parents are transform-scaled\n // down, in which case the boundingClientRect can't be used as it is\n // also scaled down (#9871, #10498).\n if (boundingClientRectWidth < offsetWidth &&\n boundingClientRectWidth >= offsetWidth - 1) {\n offsetWidth = Math.floor(boundingClientRectWidth);\n }\n return Math.max(0, // #8377\n (offsetWidth -\n (customGetStyle(el, 'padding-left', true) || 0) -\n (customGetStyle(el, 'padding-right', true) || 0)));\n }\n if (prop === 'height') {\n return Math.max(0, // #8377\n (Math.min(el.offsetHeight, el.scrollHeight) -\n (customGetStyle(el, 'padding-top', true) || 0) -\n (customGetStyle(el, 'padding-bottom', true) || 0)));\n }\n if (!win.getComputedStyle) {\n // SVG not supported, forgot to load oldie.js?\n error(27, true);\n }\n // Otherwise, get the computed style\n var css = win.getComputedStyle(el,\n void 0); // eslint-disable-line no-undefined\n if (css) {\n style = css.getPropertyValue(prop);\n if (pick(toInt, prop !== 'opacity')) {\n style = pInt(style);\n }\n }\n return style;\n }\n /**\n * Search for an item in an array.\n *\n * @function Highcharts.inArray\n *\n * @deprecated\n *\n * @param {*} item\n * The item to search for.\n *\n * @param {Array<*>} arr\n * The array or node collection to search in.\n *\n * @param {number} [fromIndex=0]\n * The index to start searching from.\n *\n * @return {number}\n * The index within the array, or -1 if not found.\n */\n function inArray(item, arr, fromIndex) {\n error(32, false, void 0, { 'Highcharts.inArray': 'use Array.indexOf' });\n return arr.indexOf(item, fromIndex);\n }\n /**\n * Return the value of the first element in the array that satisfies the\n * provided testing function.\n *\n * @function Highcharts.find\n *\n * @param {Array} arr\n * The array to test.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if this item satisfies the condition.\n *\n * @return {T|undefined}\n * The value of the element.\n */\n var find = Array.prototype.find ?\n function (arr,\n callback) {\n return arr.find(callback);\n } :\n // Legacy implementation. PhantomJS, IE <= 11 etc. #7223.\n function (arr, callback) {\n var i;\n var length = arr.length;\n for (i = 0; i < length; i++) {\n if (callback(arr[i], i)) { // eslint-disable-line node/callback-return\n return arr[i];\n }\n }\n };\n /**\n * Returns an array of a given object's own properties.\n *\n * @function Highcharts.keys\n * @deprecated\n *\n * @param {*} obj\n * The object of which the properties are to be returned.\n *\n * @return {Array}\n * An array of strings that represents all the properties.\n */\n function keys(obj) {\n error(32, false, void 0, { 'Highcharts.keys': 'use Object.keys' });\n return Object.keys(obj);\n }\n /**\n * Get the element's offset position, corrected for `overflow: auto`.\n *\n * @function Highcharts.offset\n *\n * @param {global.Element} el\n * The DOM element.\n *\n * @return {Highcharts.OffsetObject}\n * An object containing `left` and `top` properties for the position in\n * the page.\n */\n function offset(el) {\n var docElem = doc.documentElement,\n box = (el.parentElement || el.parentNode) ?\n el.getBoundingClientRect() :\n { top: 0,\n left: 0,\n width: 0,\n height: 0 };\n return {\n top: box.top + (win.pageYOffset || docElem.scrollTop) -\n (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) -\n (docElem.clientLeft || 0),\n width: box.width,\n height: box.height\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Iterate over object key pairs in an object.\n *\n * @function Highcharts.objectEach\n *\n * @param {*} obj\n * The object to iterate over.\n *\n * @param {Highcharts.ObjectEachCallbackFunction} fn\n * The iterator callback. It passes three arguments:\n * * value - The property value.\n * * key - The property key.\n * * obj - The object that objectEach is being applied to.\n *\n * @param {T} [ctx]\n * The context.\n */\n function objectEach(obj, fn, ctx) {\n /* eslint-enable valid-jsdoc */\n for (var key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n fn.call(ctx || obj[key], obj[key], key, obj);\n }\n }\n }\n /**\n * Iterate over an array.\n *\n * @deprecated\n * @function Highcharts.each\n *\n * @param {Array<*>} arr\n * The array to iterate over.\n *\n * @param {Function} fn\n * The iterator callback. It passes three arguments:\n * - `item`: The array item.\n * - `index`: The item's index in the array.\n * - `arr`: The array that each is being applied to.\n *\n * @param {*} [ctx]\n * The context.\n *\n * @return {void}\n */\n /**\n * Filter an array by a callback.\n *\n * @deprecated\n * @function Highcharts.grep\n *\n * @param {Array<*>} arr\n * The array to filter.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if the item is to be preserved.\n *\n * @return {Array<*>}\n * A new, filtered array.\n */\n /**\n * Map an array by a callback.\n *\n * @deprecated\n * @function Highcharts.map\n *\n * @param {Array<*>} arr\n * The array to map.\n *\n * @param {Function} fn\n * The callback function. Return the new value for the new array.\n *\n * @return {Array<*>}\n * A new array item with modified items.\n */\n /**\n * Reduce an array to a single value.\n *\n * @deprecated\n * @function Highcharts.reduce\n *\n * @param {Array<*>} arr\n * The array to reduce.\n *\n * @param {Function} fn\n * The callback function. Return the reduced value. Receives 4\n * arguments: Accumulated/reduced value, current value, current array\n * index, and the array.\n *\n * @param {*} initialValue\n * The initial value of the accumulator.\n *\n * @return {*}\n * The reduced value.\n */\n /**\n * Test whether at least one element in the array passes the test implemented by\n * the provided function.\n *\n * @deprecated\n * @function Highcharts.some\n *\n * @param {Array<*>} arr\n * The array to test\n *\n * @param {Function} fn\n * The function to run on each item. Return truty to pass the test.\n * Receives arguments `currentValue`, `index` and `array`.\n *\n * @param {*} ctx\n * The context.\n *\n * @return {boolean}\n */\n objectEach({\n map: 'map',\n each: 'forEach',\n grep: 'filter',\n reduce: 'reduce',\n some: 'some'\n }, function (val, key) {\n H[key] = function (arr) {\n var _a;\n error(32, false, void 0, (_a = {}, _a[\"Highcharts.\".concat(key)] = \"use Array.\".concat(val), _a));\n return Array.prototype[val].apply(arr, [].slice.call(arguments, 1));\n };\n });\n /* eslint-disable valid-jsdoc */\n /**\n * Add an event listener.\n *\n * @function Highcharts.addEvent\n *\n * @param {Highcharts.Class|T} el\n * The element or object to add a listener to. It can be a\n * {@link HTMLDOMElement}, an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The event type.\n *\n * @param {Highcharts.EventCallbackFunction|Function} fn\n * The function callback to execute when the event is fired.\n *\n * @param {Highcharts.EventOptionsObject} [options]\n * Options for adding the event.\n *\n * @return {Function}\n * A callback function to remove the added event.\n */\n function addEvent(el, type, fn, options) {\n /* eslint-enable valid-jsdoc */\n if (options === void 0) { options = {}; }\n // Add hcEvents to either the prototype (in case we're running addEvent on a\n // class) or the instance. If hasOwnProperty('hcEvents') is false, it is\n // inherited down the prototype chain, in which case we need to set the\n // property on this instance (which may itself be a prototype).\n var owner = typeof el === 'function' && el.prototype || el;\n if (!Object.hasOwnProperty.call(owner, 'hcEvents')) {\n owner.hcEvents = {};\n }\n var events = owner.hcEvents;\n // Allow click events added to points, otherwise they will be prevented by\n // the TouchPointer.pinch function after a pinch zoom operation (#7091).\n if (H.Point && // without H a dependency loop occurs\n el instanceof H.Point &&\n el.series &&\n el.series.chart) {\n el.series.chart.runTrackerClick = true;\n }\n // Handle DOM events\n // If the browser supports passive events, add it to improve performance\n // on touch events (#11353).\n var addEventListener = (el.addEventListener || H.addEventListenerPolyfill);\n if (addEventListener) {\n addEventListener.call(el, type, fn, H.supportsPassiveEvents ? {\n passive: options.passive === void 0 ?\n type.indexOf('touch') !== -1 : options.passive,\n capture: false\n } : false);\n }\n if (!events[type]) {\n events[type] = [];\n }\n var eventObject = {\n fn: fn,\n order: typeof options.order === 'number' ? options.order : Infinity\n };\n events[type].push(eventObject);\n // Order the calls\n events[type].sort(function (a, b) { return a.order - b.order; });\n // Return a function that can be called to remove this event.\n return function () {\n removeEvent(el, type, fn);\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Remove an event that was added with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.removeEvent\n *\n * @param {Highcharts.Class|T} el\n * The element to remove events on.\n *\n * @param {string} [type]\n * The type of events to remove. If undefined, all events are removed\n * from the element.\n *\n * @param {Highcharts.EventCallbackFunction} [fn]\n * The specific callback to remove. If undefined, all events that match\n * the element and optionally the type are removed.\n *\n * @return {void}\n */\n function removeEvent(el, type, fn) {\n /* eslint-enable valid-jsdoc */\n /**\n * @private\n */\n function removeOneEvent(type, fn) {\n var removeEventListener = (el.removeEventListener || H.removeEventListenerPolyfill);\n if (removeEventListener) {\n removeEventListener.call(el, type, fn, false);\n }\n }\n /**\n * @private\n */\n function removeAllEvents(eventCollection) {\n var types,\n len;\n if (!el.nodeName) {\n return; // break on non-DOM events\n }\n if (type) {\n types = {};\n types[type] = true;\n }\n else {\n types = eventCollection;\n }\n objectEach(types, function (_val, n) {\n if (eventCollection[n]) {\n len = eventCollection[n].length;\n while (len--) {\n removeOneEvent(n, eventCollection[n][len].fn);\n }\n }\n });\n }\n var owner = typeof el === 'function' && el.prototype || el;\n if (Object.hasOwnProperty.call(owner, 'hcEvents')) {\n var events = owner.hcEvents;\n if (type) {\n var typeEvents = (events[type] || []);\n if (fn) {\n events[type] = typeEvents.filter(function (obj) {\n return fn !== obj.fn;\n });\n removeOneEvent(type, fn);\n }\n else {\n removeAllEvents(events);\n events[type] = [];\n }\n }\n else {\n removeAllEvents(events);\n delete owner.hcEvents;\n }\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Fire an event that was registered with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.fireEvent\n *\n * @param {T} el\n * The object to fire the event on. It can be a {@link HTMLDOMElement},\n * an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The type of event.\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Custom event arguments that are passed on as an argument to the event\n * handler.\n *\n * @param {Highcharts.EventCallbackFunction|Function} [defaultFunction]\n * The default function to execute if the other listeners haven't\n * returned false.\n *\n * @return {void}\n */\n function fireEvent(el, type, eventArguments, defaultFunction) {\n /* eslint-enable valid-jsdoc */\n var e,\n i;\n eventArguments = eventArguments || {};\n if (doc.createEvent &&\n (el.dispatchEvent ||\n (el.fireEvent &&\n // Enable firing events on Highcharts instance.\n el !== H))) {\n e = doc.createEvent('Events');\n e.initEvent(type, true, true);\n eventArguments = extend(e, eventArguments);\n if (el.dispatchEvent) {\n el.dispatchEvent(eventArguments);\n }\n else {\n el.fireEvent(type, eventArguments);\n }\n }\n else if (el.hcEvents) {\n if (!eventArguments.target) {\n // We're running a custom event\n extend(eventArguments, {\n // Attach a simple preventDefault function to skip\n // default handler if called. The built-in\n // defaultPrevented property is not overwritable (#5112)\n preventDefault: function () {\n eventArguments.defaultPrevented = true;\n },\n // Setting target to native events fails with clicking\n // the zoom-out button in Chrome.\n target: el,\n // If the type is not set, we're running a custom event\n // (#2297). If it is set, we're running a browser event,\n // and setting it will cause en error in IE8 (#2465).\n type: type\n });\n }\n var events = [];\n var object = el;\n var multilevel = false;\n // Recurse up the inheritance chain and collect hcEvents set as own\n // objects on the prototypes.\n while (object.hcEvents) {\n if (Object.hasOwnProperty.call(object, 'hcEvents') &&\n object.hcEvents[type]) {\n if (events.length) {\n multilevel = true;\n }\n events.unshift.apply(events, object.hcEvents[type]);\n }\n object = Object.getPrototypeOf(object);\n }\n // For performance reasons, only sort the event handlers in case we are\n // dealing with multiple levels in the prototype chain. Otherwise, the\n // events are already sorted in the addEvent function.\n if (multilevel) {\n // Order the calls\n events.sort(function (a, b) { return a.order - b.order; });\n }\n // Call the collected event handlers\n events.forEach(function (obj) {\n // If the event handler returns false, prevent the default handler\n // from executing\n if (obj.fn.call(el, eventArguments) === false) {\n eventArguments.preventDefault();\n }\n });\n }\n // Run the default if not prevented\n if (defaultFunction && !eventArguments.defaultPrevented) {\n defaultFunction.call(el, eventArguments);\n }\n }\n var serialMode;\n /**\n * Get a unique key for using in internal element id's and pointers. The key is\n * composed of a random hash specific to this Highcharts instance, and a\n * counter.\n *\n * @example\n * let id = uniqueKey(); // => 'highcharts-x45f6hp-0'\n *\n * @function Highcharts.uniqueKey\n *\n * @return {string}\n * A unique key.\n */\n var uniqueKey = (function () {\n var hash = Math.random().toString(36).substring(2, 9) + '-';\n var id = 0;\n return function () {\n return 'highcharts-' + (serialMode ? '' : hash) + id++;\n };\n }());\n /**\n * Activates a serial mode for element IDs provided by\n * {@link Highcharts.uniqueKey}. This mode can be used in automated tests, where\n * a simple comparison of two rendered SVG graphics is needed.\n *\n * **Note:** This is only for testing purposes and will break functionality in\n * webpages with multiple charts.\n *\n * @example\n * if (\n * process &&\n * process.env.NODE_ENV === 'development'\n * ) {\n * Highcharts.useSerialIds(true);\n * }\n *\n * @function Highcharts.useSerialIds\n *\n * @param {boolean} [mode]\n * Changes the state of serial mode.\n *\n * @return {boolean|undefined}\n * State of the serial mode.\n */\n function useSerialIds(mode) {\n return (serialMode = pick(mode, serialMode));\n }\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n // Register Highcharts as a plugin in jQuery\n if (win.jQuery) {\n /**\n * Highcharts-extended JQuery.\n *\n * @external JQuery\n */\n /**\n * Helper function to return the chart of the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @return {Highcharts.Chart}\n * The chart that is linked to the JQuery selector element.\n */ /**\n * Factory function to create a chart in the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @param {'Chart'|'Map'|'StockChart'|string} [className]\n * Name of the factory class in the Highcharts namespace.\n *\n * @param {Highcharts.Options} [options]\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {JQuery}\n * The current JQuery selector.\n */\n win.jQuery.fn.highcharts = function () {\n var args = [].slice.call(arguments);\n if (this[0]) { // this[0] is the renderTo div\n // Create the chart\n if (args[0]) {\n new H[ // eslint-disable-line computed-property-spacing, no-new\n // Constructor defaults to Chart\n isString(args[0]) ? args.shift() : 'Chart'](this[0], args[0], args[1]);\n return this;\n }\n // When called without parameters or with the return argument,\n // return an existing chart\n return charts[attr(this[0], 'data-highcharts-chart')];\n }\n };\n }\n /* *\n *\n * Default Export\n *\n * */\n // TODO use named exports when supported.\n var Utilities = {\n addEvent: addEvent,\n arrayMax: arrayMax,\n arrayMin: arrayMin,\n attr: attr,\n clamp: clamp,\n cleanRecursively: cleanRecursively,\n clearTimeout: internalClearTimeout,\n correctFloat: correctFloat,\n createElement: createElement,\n css: css,\n defined: defined,\n destroyObjectProperties: destroyObjectProperties,\n discardElement: discardElement,\n erase: erase,\n error: error,\n extend: extend,\n extendClass: extendClass,\n find: find,\n fireEvent: fireEvent,\n getMagnitude: getMagnitude,\n getNestedProperty: getNestedProperty,\n getStyle: getStyle,\n inArray: inArray,\n isArray: isArray,\n isClass: isClass,\n isDOMElement: isDOMElement,\n isFunction: isFunction,\n isNumber: isNumber,\n isObject: isObject,\n isString: isString,\n keys: keys,\n merge: merge,\n normalizeTickInterval: normalizeTickInterval,\n objectEach: objectEach,\n offset: offset,\n pad: pad,\n pick: pick,\n pInt: pInt,\n relativeLength: relativeLength,\n removeEvent: removeEvent,\n splat: splat,\n stableSort: stableSort,\n syncTimeout: syncTimeout,\n timeUnits: timeUnits,\n uniqueKey: uniqueKey,\n useSerialIds: useSerialIds,\n wrap: wrap\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * An animation configuration. Animation configurations can also be defined as\n * booleans, where `false` turns off animation and `true` defaults to a duration\n * of 500ms and defer of 0ms.\n *\n * @interface Highcharts.AnimationOptionsObject\n */ /**\n * A callback function to exectute when the animation finishes.\n * @name Highcharts.AnimationOptionsObject#complete\n * @type {Function|undefined}\n */ /**\n * The animation defer in milliseconds.\n * @name Highcharts.AnimationOptionsObject#defer\n * @type {number|undefined}\n */ /**\n * The animation duration in milliseconds.\n * @name Highcharts.AnimationOptionsObject#duration\n * @type {number|undefined}\n */ /**\n * The name of an easing function as defined on the `Math` object.\n * @name Highcharts.AnimationOptionsObject#easing\n * @type {string|Function|undefined}\n */ /**\n * A callback function to execute on each step of each attribute or CSS property\n * that's being animated. The first argument contains information about the\n * animation and progress.\n * @name Highcharts.AnimationOptionsObject#step\n * @type {Function|undefined}\n */\n /**\n * Creates a frame for the animated SVG element.\n *\n * @callback Highcharts.AnimationStepCallbackFunction\n *\n * @param {Highcharts.SVGElement} this\n * The SVG element to animate.\n *\n * @return {void}\n */\n /**\n * Interface description for a class.\n *\n * @interface Highcharts.Class\n * @extends Function\n */ /**\n * Class costructor.\n * @function Highcharts.Class#new\n * @param {...Array<*>} args\n * Constructor arguments.\n * @return {T}\n * Class instance.\n */\n /**\n * A style object with camel case property names to define visual appearance of\n * a SVG element or HTML element. The properties can be whatever styles are\n * supported on the given SVG or HTML element.\n *\n * @example\n * {\n * fontFamily: 'monospace',\n * fontSize: '1.2em'\n * }\n *\n * @interface Highcharts.CSSObject\n */ /**\n * @name Highcharts.CSSObject#[key:string]\n * @type {boolean|number|string|undefined}\n */ /**\n * Background style for the element.\n * @name Highcharts.CSSObject#background\n * @type {string|undefined}\n */ /**\n * Background color of the element.\n * @name Highcharts.CSSObject#backgroundColor\n * @type {Highcharts.ColorString|undefined}\n */ /**\n * Border style for the element.\n * @name Highcharts.CSSObject#border\n * @type {string|undefined}\n */ /**\n * Radius of the element border.\n * @name Highcharts.CSSObject#borderRadius\n * @type {number|undefined}\n */ /**\n * Color used in the element. The 'contrast' option is a Highcharts custom\n * property that results in black or white, depending on the background of the\n * element.\n * @name Highcharts.CSSObject#color\n * @type {'contrast'|Highcharts.ColorString|undefined}\n */ /**\n * Style of the mouse cursor when resting over the element.\n * @name Highcharts.CSSObject#cursor\n * @type {Highcharts.CursorValue|undefined}\n */ /**\n * Font family of the element text. Multiple values have to be in decreasing\n * preference order and separated by comma.\n * @name Highcharts.CSSObject#fontFamily\n * @type {string|undefined}\n */ /**\n * Font size of the element text.\n * @name Highcharts.CSSObject#fontSize\n * @type {string|undefined}\n */ /**\n * Font weight of the element text.\n * @name Highcharts.CSSObject#fontWeight\n * @type {string|undefined}\n */ /**\n * Height of the element.\n * @name Highcharts.CSSObject#height\n * @type {number|undefined}\n */ /**\n * Width of the element border.\n * @name Highcharts.CSSObject#lineWidth\n * @type {number|undefined}\n */ /**\n * Opacity of the element.\n * @name Highcharts.CSSObject#opacity\n * @type {number|undefined}\n */ /**\n * Space around the element content.\n * @name Highcharts.CSSObject#padding\n * @type {string|undefined}\n */ /**\n * Behaviour of the element when the mouse cursor rests over it.\n * @name Highcharts.CSSObject#pointerEvents\n * @type {string|undefined}\n */ /**\n * Positioning of the element.\n * @name Highcharts.CSSObject#position\n * @type {string|undefined}\n */ /**\n * Alignment of the element text.\n * @name Highcharts.CSSObject#textAlign\n * @type {string|undefined}\n */ /**\n * Additional decoration of the element text.\n * @name Highcharts.CSSObject#textDecoration\n * @type {string|undefined}\n */ /**\n * Outline style of the element text.\n * @name Highcharts.CSSObject#textOutline\n * @type {string|undefined}\n */ /**\n * Line break style of the element text. Highcharts SVG elements support\n * `ellipsis` when a `width` is set.\n * @name Highcharts.CSSObject#textOverflow\n * @type {string|undefined}\n */ /**\n * Top spacing of the element relative to the parent element.\n * @name Highcharts.CSSObject#top\n * @type {string|undefined}\n */ /**\n * Animated transition of selected element properties.\n * @name Highcharts.CSSObject#transition\n * @type {string|undefined}\n */ /**\n * Line break style of the element text.\n * @name Highcharts.CSSObject#whiteSpace\n * @type {string|undefined}\n */ /**\n * Width of the element.\n * @name Highcharts.CSSObject#width\n * @type {number|undefined}\n */\n /**\n * All possible cursor styles.\n *\n * @typedef {'alias'|'all-scroll'|'auto'|'cell'|'col-resize'|'context-menu'|'copy'|'crosshair'|'default'|'e-resize'|'ew-resize'|'grab'|'grabbing'|'help'|'move'|'n-resize'|'ne-resize'|'nesw-resize'|'no-drop'|'none'|'not-allowed'|'ns-resize'|'nw-resize'|'nwse-resize'|'pointer'|'progress'|'row-resize'|'s-resize'|'se-resize'|'sw-resize'|'text'|'vertical-text'|'w-resize'|'wait'|'zoom-in'|'zoom-out'} Highcharts.CursorValue\n */\n /**\n * All possible dash styles.\n *\n * @typedef {'Dash'|'DashDot'|'Dot'|'LongDash'|'LongDashDot'|'LongDashDotDot'|'ShortDash'|'ShortDashDot'|'ShortDashDotDot'|'ShortDot'|'Solid'} Highcharts.DashStyleValue\n */\n /**\n * Generic dictionary in TypeScript notation.\n * Use the native `AnyRecord` instead.\n *\n * @deprecated\n * @interface Highcharts.Dictionary\n */ /**\n * @name Highcharts.Dictionary#[key:string]\n * @type {T}\n */\n /**\n * The function callback to execute when the event is fired. The `this` context\n * contains the instance, that fired the event.\n *\n * @callback Highcharts.EventCallbackFunction\n *\n * @param {T} this\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Event arguments.\n *\n * @return {boolean|void}\n */\n /**\n * The event options for adding function callback.\n *\n * @interface Highcharts.EventOptionsObject\n */ /**\n * The order the event handler should be called. This opens for having one\n * handler be called before another, independent of in which order they were\n * added.\n * @name Highcharts.EventOptionsObject#order\n * @type {number}\n */ /**\n * Whether an event should be passive or not.\n * When set to `true`, the function specified by listener will never call\n * `preventDefault()`.\n * @name Highcharts.EventOptionsObject#passive\n * @type boolean\n */\n /**\n * Formats data as a string. Usually the data is accessible throught the `this`\n * keyword.\n *\n * @callback Highcharts.FormatterCallbackFunction\n *\n * @param {T} this\n * Context to format\n *\n * @return {string}\n * Formatted text\n */\n /**\n * An object of key-value pairs for HTML attributes.\n *\n * @typedef {Highcharts.Dictionary} Highcharts.HTMLAttributes\n */\n /**\n * An HTML DOM element. The type is a reference to the regular HTMLElement in\n * the global scope.\n *\n * @typedef {global.HTMLElement} Highcharts.HTMLDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement\n */\n /**\n * The iterator callback.\n *\n * @callback Highcharts.ObjectEachCallbackFunction\n *\n * @param {T} this\n * The context.\n *\n * @param {*} value\n * The property value.\n *\n * @param {string} key\n * The property key.\n *\n * @param {*} obj\n * The object that objectEach is being applied to.\n */\n /**\n * An object containing `left` and `top` properties for the position in the\n * page.\n *\n * @interface Highcharts.OffsetObject\n */ /**\n * Left distance to the page border.\n * @name Highcharts.OffsetObject#left\n * @type {number}\n */ /**\n * Top distance to the page border.\n * @name Highcharts.OffsetObject#top\n * @type {number}\n */\n /**\n * Describes a range.\n *\n * @interface Highcharts.RangeObject\n */ /**\n * Maximum number of the range.\n * @name Highcharts.RangeObject#max\n * @type {number}\n */ /**\n * Minimum number of the range.\n * @name Highcharts.RangeObject#min\n * @type {number}\n */\n /**\n * If a number is given, it defines the pixel length. If a percentage string is\n * given, like for example `'50%'`, the setting defines a length relative to a\n * base size, for example the size of a container.\n *\n * @typedef {number|string} Highcharts.RelativeSize\n */\n /**\n * Proceed function to call original (wrapped) function.\n *\n * @callback Highcharts.WrapProceedFunction\n *\n * @param {*} [arg1]\n * Optional argument. Without any arguments defaults to first argument of\n * the wrapping function.\n *\n * @param {*} [arg2]\n * Optional argument. Without any arguments defaults to second argument\n * of the wrapping function.\n *\n * @param {*} [arg3]\n * Optional argument. Without any arguments defaults to third argument of\n * the wrapping function.\n *\n * @return {*}\n * Return value of the original function.\n */\n /**\n * The Highcharts object is the placeholder for all other members, and various\n * utility functions. The most important member of the namespace would be the\n * chart constructor.\n *\n * @example\n * let chart = Highcharts.chart('container', { ... });\n *\n * @namespace Highcharts\n */\n ''; // detach doclets above\n\n return Utilities;\n });\n _registerModule(_modules, 'Core/Chart/ChartDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for the chart.\n *\n * @optionparent chart\n */\n var ChartDefaults = {\n /**\n * Default `mapData` for all series,\n in terms of a GeoJSON or TopoJSON\n * object. If set to a string,\n it functions as an index into the\n * `Highcharts.maps` array.\n *\n * For picking out individual shapes and geometries to use for each series\n * of the map,\n see [series.mapData](#series.map.mapData).\n *\n * @sample maps/demo/geojson\n * Loading GeoJSON data\n * @sample maps/chart/topojson\n * Loading TopoJSON data\n *\n * @type {string|Array<*>|Highcharts.GeoJSON|Highcharts.TopoJSON}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.map\n */\n /**\n * Set lat/lon transformation definitions for the chart. If not defined,\n * these are extracted from the map data.\n *\n * @type {*}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.mapTransforms\n */\n /**\n * When using multiple axes,\n the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks,\n as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy,\n it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false,\n * then the `alignTicks ` will be disabled for the axis.\n *\n * Disabled for logarithmic axes.\n *\n * @sample {highcharts} highcharts/chart/alignticks-true/\n * True by default\n * @sample {highcharts} highcharts/chart/alignticks-false/\n * False\n * @sample {highstock} stock/chart/alignticks-true/\n * True by default\n * @sample {highstock} stock/chart/alignticks-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @product highcharts highstock gantt\n * @apioption chart.alignTicks\n */\n /**\n * When using multiple axes,\n align the thresholds. When this is true,\n other\n * ticks will also be aligned.\n *\n * Note that for line series and some other series types,\n the `threshold`\n * option is set to `null` by default. This will in turn cause their y-axis\n * to not have a threshold. In order to avoid that,\n set the series\n * `threshold` to 0 or another number.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false,\n or\n * if the axis is logarithmic,\n the threshold will not be aligned.\n *\n * @sample {highcharts} highcharts/chart/alignthresholds/ Set to true\n *\n * @since 10.0.0\n * @product highcharts highstock gantt\n * @apioption chart.alignThresholds\n */\n alignThresholds: false,\n /**\n * Set the overall animation for all chart updating. Animation can be\n * disabled throughout the chart by setting it to false here. It can\n * be overridden for each individual API method as a function parameter.\n * The only animation not affected by this option is the initial series\n * animation,\n see [plotOptions.series.animation](\n * #plotOptions.series.animation).\n *\n * The animation can either be set as a boolean or a configuration\n * object. If `true`,\n it will use the 'swing' jQuery easing and a\n * duration of 500 ms. If used as a configuration object,\n the following\n * properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds.\n *\n * - `easing`: A string reference to an easing function set on the\n * `Math` object. See\n * [the easing demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/).\n *\n * When zooming on a series with less than 100 points,\n the chart redraw\n * will be done with animation,\n but in case of more data points,\n it is\n * necessary to set this option to ensure animation on zoom.\n *\n * @sample {highcharts} highcharts/chart/animation-none/\n * Updating with no animation\n * @sample {highcharts} highcharts/chart/animation-duration/\n * With a longer duration\n * @sample {highcharts} highcharts/chart/animation-easing/\n * With a jQuery UI easing\n * @sample {highmaps} maps/chart/animation-none/\n * Updating with no animation\n * @sample {highmaps} maps/chart/animation-duration/\n * With a longer duration\n *\n * @type {boolean|Partial}\n * @default undefined\n * @apioption chart.animation\n */\n /**\n * A CSS class name to apply to the charts container `div`,\n allowing\n * unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption chart.className\n */\n /**\n * Event listeners for the chart.\n *\n * @apioption chart.events\n */\n /**\n * Fires when a series is added to the chart after load time,\n using the\n * `addSeries` method. One parameter,\n `event`,\n is passed to the\n * function,\n containing common event information. Through\n * `event.options` you can access the series options that were passed to\n * the `addSeries` method. Returning false prevents the series from\n * being added.\n *\n * @sample {highcharts} highcharts/chart/events-addseries/\n * Alert on add series\n * @sample {highstock} stock/chart/events-addseries/\n * Alert on add series\n *\n * @type {Highcharts.ChartAddSeriesCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.addSeries\n */\n /**\n * Fires when clicking on the plot background. One parameter,\n `event`,\n * is passed to the function,\n containing common event information.\n *\n * Information on the clicked spot can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' value at the clicked spot. The primary axes\n * are `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * click: function(e) {\n * console.log(\n * Highcharts.dateFormat('%Y-%m-%d %H:%M:%S',\n e.xAxis[0].value),\n * e.yAxis[0].value\n * )\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-click/\n * Alert coordinates on click\n * @sample {highcharts} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highstock} stock/chart/events-click/\n * Alert coordinates on click\n * @sample {highstock} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highmaps} maps/chart/events-click/\n * Record coordinates on click\n * @sample {highmaps} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n *\n * @type {Highcharts.ChartClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.click\n */\n /**\n * Fires when the chart is finished loading. Since v4.2.2,\n it also waits\n * for images to be loaded,\n for example from point markers. One\n * parameter,\n `event`,\n is passed to the function,\n containing common\n * event information.\n *\n * There is also a second parameter to the chart constructor where a\n * callback function can be passed to be executed on chart.load.\n *\n * @sample {highcharts} highcharts/chart/events-load/\n * Alert on chart load\n * @sample {highstock} stock/chart/events-load/\n * Alert on chart load\n * @sample {highmaps} maps/chart/events-load/\n * Add series on chart load\n *\n * @type {Highcharts.ChartLoadCallbackFunction}\n * @context Highcharts.Chart\n * @apioption chart.events.load\n */\n /**\n * Fires when the chart is redrawn,\n either after a call to\n * `chart.redraw()` or after an axis,\n series or point is modified with\n * the `redraw` option set to `true`. One parameter,\n `event`,\n is passed\n * to the function,\n containing common event information.\n *\n * @sample {highcharts} highcharts/chart/events-redraw/\n * Alert on chart redraw\n * @sample {highstock} stock/chart/events-redraw/\n * Alert on chart redraw when adding a series or moving the\n * zoomed range\n * @sample {highmaps} maps/chart/events-redraw/\n * Set subtitle on chart redraw\n *\n * @type {Highcharts.ChartRedrawCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.redraw\n */\n /**\n * Fires after initial load of the chart (directly after the `load`\n * event),\n and after each redraw (directly after the `redraw` event).\n *\n * @type {Highcharts.ChartRenderCallbackFunction}\n * @since 5.0.7\n * @context Highcharts.Chart\n * @apioption chart.events.render\n */\n /**\n * Fires when an area of the chart has been selected. Selection is\n * enabled by setting the chart's zoomType. One parameter,\n `event`,\n is\n * passed to the function,\n containing common event information. The\n * default action for the selection event is to zoom the chart to the\n * selected area. It can be prevented by calling\n * `event.preventDefault()` or return false.\n *\n * Information on the selected area can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' min and max values. The primary axes are\n * `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * selection: function(event) {\n * // log the min and max of the primary, datetime x-axis\n * console.log(\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].min\n * ),\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].max\n * )\n * );\n * // log the min and max of the y axis\n * console.log(event.yAxis[0].min, event.yAxis[0].max);\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-selection/\n * Report on selection and reset\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highstock} stock/chart/events-selection/\n * Report on selection and reset\n * @sample {highstock} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * (Highcharts)\n *\n * @type {Highcharts.ChartSelectionCallbackFunction}\n * @apioption chart.events.selection\n */\n /**\n * The margin between the outer edge of the chart and the plot area.\n * The numbers in the array designate top, right, bottom and left\n * respectively. Use the options `marginTop`, `marginRight`,\n * `marginBottom` and `marginLeft` for shorthand setting of one option.\n *\n * By default there is no margin. The actual space is dynamically\n * calculated from the offset of axis labels, axis title, title,\n * subtitle and legend in addition to the `spacingTop`, `spacingRight`,\n * `spacingBottom` and `spacingLeft` options.\n *\n * @sample {highcharts} highcharts/chart/margins-zero/\n * Zero margins\n * @sample {highstock} stock/chart/margin-zero/\n * Zero margins\n *\n * @type {number|Array}\n * @apioption chart.margin\n */\n /**\n * The margin between the bottom outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingBottom`.\n *\n * @sample {highcharts} highcharts/chart/marginbottom/\n * 100px bottom margin\n * @sample {highstock} stock/chart/marginbottom/\n * 100px bottom margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginBottom\n */\n /**\n * The margin between the left outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingLeft`.\n *\n * @sample {highcharts} highcharts/chart/marginleft/\n * 150px left margin\n * @sample {highstock} stock/chart/marginleft/\n * 150px left margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginLeft\n */\n /**\n * The margin between the right outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingRight`.\n *\n * @sample {highcharts} highcharts/chart/marginright/\n * 100px right margin\n * @sample {highstock} stock/chart/marginright/\n * 100px right margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginRight\n */\n /**\n * The margin between the top outer edge of the chart and the plot area.\n * Use this to set a fixed pixel value for the margin as opposed to\n * the default dynamic margin. See also `spacingTop`.\n *\n * @sample {highcharts} highcharts/chart/margintop/ 100px top margin\n * @sample {highstock} stock/chart/margintop/\n * 100px top margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginTop\n */\n /**\n * Callback function to override the default function that formats all\n * the numbers in the chart. Returns a string with the formatted number.\n *\n * @sample highcharts/members/highcharts-numberformat\n * Arabic digits in Highcharts\n * @type {Highcharts.NumberFormatterCallbackFunction}\n * @since 8.0.0\n * @apioption chart.numberFormatter\n */\n /**\n * Allows setting a key to switch between zooming and panning. Can be\n * one of `alt`, `ctrl`, `meta` (the command key on Mac and Windows\n * key on Windows) or `shift`. The keys are mapped directly to the key\n * properties of the click event argument (`event.altKey`,\n * `event.ctrlKey`, `event.metaKey` and `event.shiftKey`).\n *\n * @type {string}\n * @since 4.0.3\n * @product highcharts gantt\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @apioption chart.panKey\n */\n /**\n * Allow panning in a chart. Best used with [panKey](#chart.panKey)\n * to combine zooming and panning.\n *\n * On touch devices, when the [tooltip.followTouchMove](\n * #tooltip.followTouchMove) option is `true` (default), panning\n * requires two fingers. To allow panning with one finger, set\n * `followTouchMove` to `false`.\n *\n * @sample {highcharts} highcharts/chart/pankey/ Zooming and panning\n * @sample {highstock} stock/chart/panning/ Zooming and xy panning\n */\n panning: {\n /**\n * Enable or disable chart panning.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock|highmaps} true\n */\n enabled: false,\n /**\n * Decides in what dimensions the user can pan the chart. Can be\n * one of `x`, `y`, or `xy`.\n *\n * @sample {highcharts} highcharts/chart/panning-type\n * Zooming and xy panning\n *\n * @declare Highcharts.OptionsChartPanningTypeValue\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @default {highcharts|highstock} x\n * @product highcharts highstock gantt\n */\n type: 'x'\n },\n /**\n * Equivalent to [zoomType](#chart.zoomType), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `zoomType` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @since 3.0\n * @product highcharts highstock gantt\n * @deprecated\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.pinchType\n */\n /**\n * Whether to apply styled mode. When in styled mode, no presentational\n * attributes or CSS are applied to the chart SVG. Instead, CSS rules\n * are required to style the chart. The default style sheet is\n * available from `https://code.highcharts.com/css/highcharts.css`.\n *\n * @type {boolean}\n * @default false\n * @since 7.0\n * @apioption chart.styledMode\n */\n styledMode: false,\n /**\n * The corner radius of the outer chart border.\n *\n * @sample {highcharts} highcharts/chart/borderradius/\n * 20px radius\n * @sample {highstock} stock/chart/border/\n * 10px radius\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n */\n borderRadius: 0,\n /**\n * In styled mode, this sets how many colors the class names\n * should rotate between. With ten colors, series (or points) are\n * given class names like `highcharts-color-0`, `highcharts-color-1`\n * [...] `highcharts-color-9`. The equivalent in non-styled mode\n * is to set colors using the [colors](#colors) setting.\n *\n * @since 5.0.0\n */\n colorCount: 10,\n /**\n * By default, (because of memory and performance reasons) the chart does\n * not copy the data but keeps it as a reference. In some cases, this might\n * result in mutating the original data source. In order to prevent that,\n * set that property to false. Please note that changing that might decrease\n * performance, especially with bigger sets of data.\n *\n * @type {boolean}\n * @since 10.1.0\n */\n allowMutatingData: true,\n /**\n * Alias of `type`.\n *\n * @sample {highcharts} highcharts/chart/defaultseriestype/\n * Bar\n *\n * @deprecated\n *\n * @product highcharts\n */\n defaultSeriesType: 'line',\n /**\n * If true, the axes will scale to the remaining visible series once\n * one series is hidden. If false, hiding and showing a series will\n * not affect the axes or the other series. For stacks, once one series\n * within the stack is hidden, the rest of the stack will close in\n * around it even if the axis is not affected.\n *\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-false/\n * False\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true-stacked/\n * True with stack\n * @sample {highstock} stock/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highstock} stock/chart/ignorehiddenseries-false/\n * False\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n ignoreHiddenSeries: true,\n /**\n * Whether to invert the axes so that the x axis is vertical and y axis\n * is horizontal. When `true`, the x axis is [reversed](#xAxis.reversed)\n * by default.\n *\n * @productdesc {highcharts}\n * If a bar series is present in the chart, it will be inverted\n * automatically. Inverting the chart doesn't have an effect if there\n * are no cartesian series in the chart, or if the chart is\n * [polar](#chart.polar).\n *\n * @sample {highcharts} highcharts/chart/inverted/\n * Inverted line\n * @sample {highstock} stock/navigator/inverted/\n * Inverted stock chart\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption chart.inverted\n */\n /**\n * The distance between the outer edge of the chart and the content,\n * like title or legend, or axis title and labels if present. The\n * numbers in the array designate top, right, bottom and left\n * respectively. Use the options spacingTop, spacingRight, spacingBottom\n * and spacingLeft options for shorthand setting of one option.\n *\n * @type {Array}\n * @see [chart.margin](#chart.margin)\n * @default [10, 10, 15, 10]\n * @since 3.0.6\n */\n spacing: [10, 10, 15, 10],\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n *\n * @since 2.2\n * @deprecated 10.2.1\n */\n resetZoomButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.resetZoomButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n */\n theme: {\n /**\n * @internal\n */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.resetZoomButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n },\n /**\n * The pixel width of the plot area border.\n *\n * @sample {highcharts} highcharts/chart/plotborderwidth/\n * 1px border\n * @sample {highstock} stock/chart/plotborder/\n * 2px border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.plotBorderWidth\n */\n /**\n * Whether to apply a drop shadow to the plot area. Requires that\n * plotBackgroundColor be set. The shadow can be an object configuration\n * containing `color`, `offsetX`, `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/chart/plotshadow/\n * Plot shadow\n * @sample {highstock} stock/chart/plotshadow/\n * Plot shadow\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.plotShadow\n */\n /**\n * When true, cartesian charts like line, spline, area and column are\n * transformed into the polar coordinate system. This produces _polar\n * charts_, also known as _radar charts_.\n *\n * @sample {highcharts} highcharts/demo/polar/\n * Polar chart\n * @sample {highcharts} highcharts/demo/polar-wind-rose/\n * Wind rose, stacked polar column chart\n * @sample {highcharts} highcharts/demo/polar-spider/\n * Spider web chart\n * @sample {highcharts} highcharts/parallel-coordinates/polar/\n * Star plot, multivariate data in a polar chart\n *\n * @type {boolean}\n * @default false\n * @since 2.3.0\n * @product highcharts\n * @requires highcharts-more\n * @apioption chart.polar\n */\n /**\n * Whether to reflow the chart to fit the width of the container div\n * on resizing the window.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * True by default\n * @sample {highcharts} highcharts/chart/reflow-false/\n * False\n * @sample {highstock} stock/chart/reflow-true/\n * True by default\n * @sample {highstock} stock/chart/reflow-false/\n * False\n * @sample {highmaps} maps/chart/reflow-true/\n * True by default\n * @sample {highmaps} maps/chart/reflow-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @since 2.1\n * @apioption chart.reflow\n */\n /**\n * The HTML element where the chart will be rendered. If it is a string,\n * the element by that id is used. The HTML element can also be passed\n * by direct reference, or as the first argument of the chart\n * constructor, in which case the option is not needed.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * String\n * @sample {highcharts} highcharts/chart/renderto-object/\n * Object reference\n * @sample {highstock} stock/chart/renderto-string/\n * String\n * @sample {highstock} stock/chart/renderto-object/\n * Object reference\n *\n * @type {string|Highcharts.HTMLDOMElement}\n * @apioption chart.renderTo\n */\n /**\n * The background color of the marker square when selecting (zooming\n * in on) an area of the chart.\n *\n * @see In styled mode, the selection marker fill is set with the\n * `.highcharts-selection-marker` class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default rgba(51,92,173,0.25)\n * @since 2.1.7\n * @apioption chart.selectionMarkerFill\n */\n /**\n * Whether to apply a drop shadow to the outer chart area. Requires\n * that backgroundColor be set. The shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity` and\n * `width`.\n *\n * @sample {highcharts} highcharts/chart/shadow/\n * Shadow\n * @sample {highstock} stock/chart/shadow/\n * Shadow\n * @sample {highmaps} maps/chart/border/\n * Chart border and shadow\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.shadow\n */\n /**\n * Whether to show the axes initially. This only applies to empty charts\n * where series are added dynamically, as axes are automatically added\n * to cartesian series.\n *\n * @sample {highcharts} highcharts/chart/showaxes-false/\n * False by default\n * @sample {highcharts} highcharts/chart/showaxes-true/\n * True\n *\n * @type {boolean}\n * @since 1.2.5\n * @product highcharts gantt\n * @apioption chart.showAxes\n */\n /**\n * The space between the bottom edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highstock} stock/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 15\n * @since 2.1\n * @apioption chart.spacingBottom\n */\n /**\n * The space between the left edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highstock} stock/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingLeft\n */\n /**\n * The space between the right edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingright-100/\n * Spacing set to 100\n * @sample {highcharts} highcharts/chart/spacingright-legend/\n * Legend in right position with default spacing\n * @sample {highstock} stock/chart/spacingright/\n * Spacing set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingRight\n */\n /**\n * The space between the top edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingtop-100/\n * A top spacing of 100\n * @sample {highcharts} highcharts/chart/spacingtop-10/\n * Floating chart title makes the plot area align to the default\n * spacingTop of 10.\n * @sample {highstock} stock/chart/spacingtop/\n * A top spacing of 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingTop\n */\n /**\n * Additional CSS styles to apply inline to the container `div`. Note\n * that since the default font styles are applied in the renderer, it\n * is ignorant of the individual chart options and must be set globally.\n * Also note that changing the font size in the `chart.style` options only\n * applies to those elements that do not have a specific `fontSize` setting.\n *\n * @see In styled mode, general chart styles can be set with the\n * `.highcharts-root` class.\n * @sample {highcharts} highcharts/chart/style-serif-font/\n * Using a serif type font\n * @sample {highcharts} highcharts/css/em/\n * Styled mode with relative font sizes\n * @sample {highstock} stock/chart/style/\n * Using a serif type font\n * @sample {highmaps} maps/chart/style-serif-font/\n * Using a serif type font\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontFamily\": \"\\\"Lucida Grande\\\", \\\"Lucida Sans Unicode\\\", Verdana, Arial, Helvetica, sans-serif\",\"fontSize\":\"12px\"}\n * @apioption chart.style\n */\n /**\n * The default series type for the chart. Can be any of the chart types\n * listed under [plotOptions](#plotOptions) and [series](#series) or can\n * be a series provided by an additional module.\n *\n * In TypeScript this option has no effect in sense of typing and\n * instead the `type` option must always be set in the series.\n *\n * @sample {highcharts} highcharts/chart/type-bar/\n * Bar\n * @sample {highstock} stock/chart/type/\n * Areaspline\n * @sample {highmaps} maps/chart/type-mapline/\n * Mapline\n *\n * @type {string}\n * @default {highcharts} line\n * @default {highstock} line\n * @default {highmaps} map\n * @since 2.1.0\n * @apioption chart.type\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @see [panKey](#chart.panKey)\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * None by default\n * @sample {highcharts} highcharts/chart/zoomtype-x/\n * X\n * @sample {highcharts} highcharts/chart/zoomtype-y/\n * Y\n * @sample {highcharts} highcharts/chart/zoomtype-xy/\n * Xy\n * @sample {highcharts} highcharts/chart/zoomtype-polar/\n * Zoom on polar chart\n * @sample {highstock} stock/demo/basic-line/\n * None by default\n * @sample {highstock} stock/chart/zoomtype-x/\n * X\n * @sample {highstock} stock/chart/zoomtype-y/\n * Y\n * @sample {highstock} stock/chart/zoomtype-xy/\n * Xy\n * @sample {highmaps} maps/chart/zoomtype-xy/\n * Map with selection zoom\n *\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @deprecated\n * @apioption chart.zoomType\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zoomType](#chart.zoomType). When enabled, two-finger pinch\n * will still work as set up by [chart.pinchType](#chart.pinchType).\n * However, `zoomBySingleTouch` will interfere with touch-dragging the\n * chart to read the tooltip. And especially when vertical zooming is\n * enabled, it will make it hard to scroll vertically on the page.\n * @since 9.0.0\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n * @product highcharts highstock gantt\n * @deprecated\n */\n zoomBySingleTouch: false,\n /**\n * Chart zooming options.\n * @since 10.2.1\n */\n zooming: {\n /**\n * Equivalent to [type](#chart.zooming.type), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `type` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.pinchType\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @declare Highcharts.OptionsChartZoomingTypeValue\n * @type {string}\n * @default {highcharts} undefined\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.type\n */\n /**\n * Set a key to hold when dragging to zoom the chart. This is useful to\n * avoid zooming while moving points. Should be set different than\n * [chart.panKey](#chart.panKey).\n *\n * @type {string}\n * @default {highcharts} undefined\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @requires modules/draggable-points\n * @apioption chart.zooming.key\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zooming.type](#chart.zooming.type). When enabled, two-finger\n * pinch will still work as set up by [chart.zooming.pinchType]\n * (#chart.zooming.pinchType). However, `singleTouch` will interfere\n * with touch-dragging the chart to read the tooltip. And especially\n * when vertical zooming is enabled, it will make it hard to scroll\n * vertically on the page.\n *\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n *\n * @product highcharts highstock gantt\n */\n singleTouch: false,\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n */\n resetButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.zooming.resetButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n * @since 10.2.1\n */\n theme: {\n /** @internal */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n * @since 10.2.1\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.zooming.resetButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n }\n },\n /**\n * An explicit width for the chart. By default (when `null`) the width\n * is calculated from the offset width of the containing element.\n *\n * @sample {highcharts} highcharts/chart/width/\n * 800px wide\n * @sample {highstock} stock/chart/width/\n * 800px wide\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n *\n * @type {null|number|string}\n */\n width: null,\n /**\n * An explicit height for the chart. If a _number_, the height is\n * given in pixels. If given a _percentage string_ (for example\n * `'56%'`), the height is given as the percentage of the actual chart\n * width. This allows for preserving the aspect ratio across responsive\n * sizes.\n *\n * By default (when `null`) the height is calculated from the offset\n * height of the containing element, or 400 pixels if the containing\n * element's height is 0.\n *\n * @sample {highcharts} highcharts/chart/height/\n * 500px height\n * @sample {highstock} stock/chart/height/\n * 300px height\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n * @sample highcharts/chart/height-percent/\n * Highcharts with percentage height\n *\n * @type {null|number|string}\n */\n height: null,\n /**\n * The color of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/bordercolor/\n * Brown border\n * @sample {highstock} stock/chart/border/\n * Brown border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#335cad\" /* Palette.highlightColor80 */,\n /**\n * The pixel width of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/borderwidth/\n * 5px border\n * @sample {highstock} stock/chart/border/\n * 2px border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.borderWidth\n */\n /**\n * The background color or gradient for the outer chart area.\n *\n * @see In styled mode, the background is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/backgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/backgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/backgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/backgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The background color or gradient for the plot area.\n *\n * @see In styled mode, the plot background is set with the\n * `.highcharts-plot-background` class.\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption chart.plotBackgroundColor\n */\n /**\n * The URL for an image to use as the plot background. To set an image\n * as the background for the entire chart, set a CSS background image\n * to the container element. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export server.\n *\n * @see In styled mode, a plot background image can be set with the\n * `.highcharts-plot-background` class and a [custom pattern](\n * https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundimage/\n * Skies\n * @sample {highstock} stock/chart/plotbackgroundimage/\n * Skies\n *\n * @type {string}\n * @apioption chart.plotBackgroundImage\n */\n /**\n * The color of the inner chart or plot area border.\n *\n * @see In styled mode, a plot border stroke can be set with the\n * `.highcharts-plot-border` class.\n *\n * @sample {highcharts} highcharts/chart/plotbordercolor/\n * Blue border\n * @sample {highstock} stock/chart/plotborder/\n * Blue border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n plotBorderColor: \"#cccccc\" /* Palette.neutralColor20 */\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ChartDefaults;\n });\n _registerModule(_modules, 'Core/Color/Color.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var isNumber = U.isNumber,\n merge = U.merge,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Handle color operations. Some object methods are chainable.\n *\n * @class\n * @name Highcharts.Color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n var Color = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Color(input) {\n this.rgba = [NaN, NaN, NaN, NaN];\n this.input = input;\n var GlobalColor = H.Color;\n // Backwards compatibility, allow class overwrite\n if (GlobalColor && GlobalColor !== Color) {\n return new GlobalColor(input);\n }\n // Backwards compatibility, allow instanciation without new (#13053)\n if (!(this instanceof Color)) {\n return new Color(input);\n }\n this.init(input);\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Creates a color instance out of a color string or object.\n *\n * @function Highcharts.Color.parse\n *\n * @param {Highcharts.ColorType} [input]\n * The input color in either rbga or hex format.\n *\n * @return {Highcharts.Color}\n * Color instance.\n */\n Color.parse = function (input) {\n return input ? new Color(input) : Color.None;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Parse the input color to rgba array\n *\n * @private\n * @function Highcharts.Color#init\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n Color.prototype.init = function (input) {\n var result,\n rgba,\n i,\n parser;\n // Gradients\n if (typeof input === 'object' &&\n typeof input.stops !== 'undefined') {\n this.stops = input.stops.map(function (stop) { return new Color(stop[1]); });\n // Solid colors\n }\n else if (typeof input === 'string') {\n this.input = input = (Color.names[input.toLowerCase()] || input);\n // Bitmasking as input[0] is not working for legacy IE.\n if (input.charAt(0) === '#') {\n var len = input.length,\n col = parseInt(input.substr(1), 16);\n // Handle long-form, e.g. #AABBCC\n if (len === 7) {\n rgba = [\n (col & 0xFF0000) >> 16,\n (col & 0xFF00) >> 8,\n (col & 0xFF),\n 1\n ];\n // Handle short-form, e.g. #ABC\n // In short form, the value is assumed to be the same\n // for both nibbles for each component. e.g. #ABC = #AABBCC\n }\n else if (len === 4) {\n rgba = [\n (((col & 0xF00) >> 4) |\n (col & 0xF00) >> 8),\n (((col & 0xF0) >> 4) |\n (col & 0xF0)),\n ((col & 0xF) << 4) | (col & 0xF),\n 1\n ];\n }\n }\n // Otherwise, check regex parsers\n if (!rgba) {\n i = Color.parsers.length;\n while (i-- && !rgba) {\n parser = Color.parsers[i];\n result = parser.regex.exec(input);\n if (result) {\n rgba = parser.parse(result);\n }\n }\n }\n }\n if (rgba) {\n this.rgba = rgba;\n }\n };\n /**\n * Return the color or gradient stops in the specified format\n *\n * @function Highcharts.Color#get\n *\n * @param {string} [format]\n * Possible values are 'a', 'rgb', 'rgba' (default).\n *\n * @return {Highcharts.ColorType}\n * This color as a string or gradient stops.\n */\n Color.prototype.get = function (format) {\n var input = this.input,\n rgba = this.rgba;\n if (typeof input === 'object' &&\n typeof this.stops !== 'undefined') {\n var ret_1 = merge(input);\n ret_1.stops = [].slice.call(ret_1.stops);\n this.stops.forEach(function (stop, i) {\n ret_1.stops[i] = [\n ret_1.stops[i][0],\n stop.get(format)\n ];\n });\n return ret_1;\n }\n // it's NaN if gradient colors on a column chart\n if (rgba && isNumber(rgba[0])) {\n if (format === 'rgb' || (!format && rgba[3] === 1)) {\n return 'rgb(' + rgba[0] + ',' + rgba[1] + ',' + rgba[2] + ')';\n }\n if (format === 'a') {\n return \"\".concat(rgba[3]);\n }\n return 'rgba(' + rgba.join(',') + ')';\n }\n return input;\n };\n /**\n * Brighten the color instance.\n *\n * @function Highcharts.Color#brighten\n *\n * @param {number} alpha\n * The alpha value.\n *\n * @return {Highcharts.Color}\n * This color with modifications.\n */\n Color.prototype.brighten = function (alpha) {\n var rgba = this.rgba;\n if (this.stops) {\n this.stops.forEach(function (stop) {\n stop.brighten(alpha);\n });\n }\n else if (isNumber(alpha) && alpha !== 0) {\n for (var i = 0; i < 3; i++) {\n rgba[i] += pInt(alpha * 255);\n if (rgba[i] < 0) {\n rgba[i] = 0;\n }\n if (rgba[i] > 255) {\n rgba[i] = 255;\n }\n }\n }\n return this;\n };\n /**\n * Set the color's opacity to a given alpha value.\n *\n * @function Highcharts.Color#setOpacity\n *\n * @param {number} alpha\n * Opacity between 0 and 1.\n *\n * @return {Highcharts.Color}\n * Color with modifications.\n */\n Color.prototype.setOpacity = function (alpha) {\n this.rgba[3] = alpha;\n return this;\n };\n /**\n * Return an intermediate color between two colors.\n *\n * @function Highcharts.Color#tweenTo\n *\n * @param {Highcharts.Color} to\n * The color object to tween to.\n *\n * @param {number} pos\n * The intermediate position, where 0 is the from color (current color\n * item), and 1 is the `to` color.\n *\n * @return {Highcharts.ColorType}\n * The intermediate color in rgba notation, or unsupported type.\n */\n Color.prototype.tweenTo = function (to, pos) {\n var fromRgba = this.rgba,\n toRgba = to.rgba;\n // Unsupported color, return to-color (#3920, #7034)\n if (!isNumber(fromRgba[0]) || !isNumber(toRgba[0])) {\n return to.input || 'none';\n }\n // Check for has alpha, because rgba colors perform worse due to\n // lack of support in WebKit.\n var hasAlpha = (toRgba[3] !== 1 || fromRgba[3] !== 1);\n return (hasAlpha ? 'rgba(' : 'rgb(') +\n Math.round(toRgba[0] + (fromRgba[0] - toRgba[0]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[1] + (fromRgba[1] - toRgba[1]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[2] + (fromRgba[2] - toRgba[2]) * (1 - pos)) +\n (hasAlpha ?\n (',' +\n (toRgba[3] + (fromRgba[3] - toRgba[3]) * (1 - pos))) :\n '') +\n ')';\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * Collection of named colors. Can be extended from the outside by adding\n * colors to Highcharts.Color.names.\n * @private\n */\n Color.names = {\n white: '#ffffff',\n black: '#000000'\n };\n /**\n * Collection of parsers. This can be extended from the outside by pushing\n * parsers to `Color.parsers`.\n */\n Color.parsers = [{\n // RGBA color\n // eslint-disable-next-line max-len\n regex: /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,\n parse: function (result) {\n return [\n pInt(result[1]),\n pInt(result[2]),\n pInt(result[3]),\n parseFloat(result[4], 10)\n ];\n }\n }, {\n // RGB color\n regex: /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,\n parse: function (result) {\n return [pInt(result[1]), pInt(result[2]), pInt(result[3]), 1];\n }\n }];\n // Must be last static member for init cycle\n Color.None = new Color('');\n return Color;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A valid color to be parsed and handled by Highcharts. Highcharts internally\n * supports hex colors like `#ffffff`, rgb colors like `rgb(255,255,255)` and\n * rgba colors like `rgba(255,255,255,1)`. Other colors may be supported by the\n * browsers and displayed correctly, but Highcharts is not able to process them\n * and apply concepts like opacity and brightening.\n *\n * @typedef {string} Highcharts.ColorString\n */\n /**\n * A valid color type than can be parsed and handled by Highcharts. It can be a\n * color string, a gradient object, or a pattern object.\n *\n * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType\n */\n /**\n * Gradient options instead of a solid color.\n *\n * @example\n * // Linear gradient used as a color option\n * color: {\n * linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n * stops: [\n * [0, '#003399'], // start\n * [0.5, '#ffffff'], // middle\n * [1, '#3366AA'] // end\n * ]\n * }\n *\n * @interface Highcharts.GradientColorObject\n */ /**\n * Holds an object that defines the start position and the end position relative\n * to the shape.\n * @name Highcharts.GradientColorObject#linearGradient\n * @type {Highcharts.LinearGradientColorObject|undefined}\n */ /**\n * Holds an object that defines the center position and the radius.\n * @name Highcharts.GradientColorObject#radialGradient\n * @type {Highcharts.RadialGradientColorObject|undefined}\n */ /**\n * The first item in each tuple is the position in the gradient, where 0 is the\n * start of the gradient and 1 is the end of the gradient. Multiple stops can be\n * applied. The second item is the color for each stop. This color can also be\n * given in the rgba format.\n * @name Highcharts.GradientColorObject#stops\n * @type {Array}\n */\n /**\n * Color stop tuple.\n *\n * @see Highcharts.GradientColorObject\n *\n * @interface Highcharts.GradientColorStopObject\n */ /**\n * @name Highcharts.GradientColorStopObject#0\n * @type {number}\n */ /**\n * @name Highcharts.GradientColorStopObject#1\n * @type {Highcharts.ColorString}\n */ /**\n * @name Highcharts.GradientColorStopObject#color\n * @type {Highcharts.Color|undefined}\n */\n /**\n * Defines the start position and the end position for a gradient relative\n * to the shape. Start position (x1, y1) and end position (x2, y2) are relative\n * to the shape, where 0 means top/left and 1 is bottom/right.\n *\n * @interface Highcharts.LinearGradientColorObject\n */ /**\n * Start horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x1\n * @type {number}\n */ /**\n * End horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x2\n * @type {number}\n */ /**\n * Start vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y1\n * @type {number}\n */ /**\n * End vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y2\n * @type {number}\n */\n /**\n * Defines the center position and the radius for a gradient.\n *\n * @interface Highcharts.RadialGradientColorObject\n */ /**\n * Center horizontal position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cx\n * @type {number}\n */ /**\n * Center vertical position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cy\n * @type {number}\n */ /**\n * Radius relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#r\n * @type {number}\n */\n /**\n * Creates a color instance out of a color string.\n *\n * @function Highcharts.color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n *\n * @return {Highcharts.Color}\n * Color instance\n */\n (''); // detach doclets above\n\n return Color;\n });\n _registerModule(_modules, 'Core/Color/Palettes.js', [], function () {\n /**\n * Series palettes for Highcharts. Series colors are defined in highcharts.scss.\n * **Do not edit this file!** This file is generated using the 'gulp palette' task.\n */\n var SeriesPalettes = {\n /**\n * Colors for data series and points.\n */\n colors: [\n '#7cb5ec',\n '#434348',\n '#90ed7d',\n '#f7a35c',\n '#8085e9',\n '#f15c80',\n '#e4d354',\n '#2b908f',\n '#f45b5b',\n '#91e8e1'\n ]\n };\n\n return SeriesPalettes;\n });\n _registerModule(_modules, 'Core/Time.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var win = H.win;\n var defined = U.defined,\n error = U.error,\n extend = U.extend,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pad = U.pad,\n pick = U.pick,\n splat = U.splat,\n timeUnits = U.timeUnits;\n /* *\n *\n * Constants\n *\n * */\n var hasNewSafariBug = H.isSafari &&\n win.Intl &&\n win.Intl.DateTimeFormat.prototype.formatRange;\n // To do: Remove this when we no longer need support for Safari < v14.1\n var hasOldSafariBug = H.isSafari &&\n win.Intl &&\n !win.Intl.DateTimeFormat.prototype.formatRange;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Time class. Time settings are applied in general for each page using\n * `Highcharts.setOptions`, or individually for each Chart item through the\n * [time](https://api.highcharts.com/highcharts/time) options set.\n *\n * The Time object is available from {@link Highcharts.Chart#time},\n * which refers to `Highcharts.time` if no individual time settings are\n * applied.\n *\n * @example\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n *\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n *\n * @since 6.0.5\n *\n * @class\n * @name Highcharts.Time\n *\n * @param {Highcharts.TimeOptions} [options]\n * Time options as defined in [chart.options.time](/highcharts/time).\n */\n var Time = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Time(options) {\n /* *\n *\n * Properties\n *\n * */\n this.options = {};\n this.useUTC = false;\n this.variableTimezone = false;\n this.Date = win.Date;\n /**\n * Get the time zone offset based on the current timezone information as\n * set in the global options.\n *\n * @function Highcharts.Time#getTimezoneOffset\n *\n * @param {number} timestamp\n * The JavaScript timestamp to inspect.\n *\n * @return {number}\n * The timezone offset in minutes compared to UTC.\n */\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n this.update(options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Time units used in `Time.get` and `Time.set`\n *\n * @typedef {\"Date\"|\"Day\"|\"FullYear\"|\"Hours\"|\"Milliseconds\"|\"Minutes\"|\"Month\"|\"Seconds\"} Highcharts.TimeUnitValue\n */\n /**\n * Get the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.getXXX / Date.getUTCXXX`, so instead of calling\n * `date.getHours()` or `date.getUTCHours()` we will call\n * `time.get('Hours')`.\n *\n * @function Highcharts.Time#get\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n *\n * @return {number}\n * The given time unit\n */\n Time.prototype.get = function (unit, date) {\n if (this.variableTimezone || this.timezoneOffset) {\n var realMs = date.getTime();\n var ms = realMs - this.getTimezoneOffset(date);\n date.setTime(ms); // Temporary adjust to timezone\n var ret = date['getUTC' + unit]();\n date.setTime(realMs); // Reset\n return ret;\n }\n // UTC time with no timezone handling\n if (this.useUTC) {\n return date['getUTC' + unit]();\n }\n // Else, local time\n return date['get' + unit]();\n };\n /**\n * Set the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.setXXX / Date.setUTCXXX`, so instead of calling\n * `date.setHours(0)` or `date.setUTCHours(0)` we will call\n * `time.set('Hours', 0)`.\n *\n * @function Highcharts.Time#set\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n * @param {number} value\n *\n * @return {number}\n * The epoch milliseconds of the updated date\n */\n Time.prototype.set = function (unit, date, value) {\n // UTC time with timezone handling\n if (this.variableTimezone || this.timezoneOffset) {\n // For lower order time units, just set it directly using UTC\n // time\n if (unit === 'Milliseconds' ||\n unit === 'Seconds' ||\n (unit === 'Minutes' &&\n this.getTimezoneOffset(date) % 3600000 === 0) // #13961\n ) {\n return date['setUTC' + unit](value);\n }\n // Higher order time units need to take the time zone into\n // account\n // Adjust by timezone\n var offset = this.getTimezoneOffset(date);\n var ms = date.getTime() - offset;\n date.setTime(ms);\n date['setUTC' + unit](value);\n var newOffset = this.getTimezoneOffset(date);\n ms = date.getTime() + newOffset;\n return date.setTime(ms);\n }\n // UTC time with no timezone handling\n if (this.useUTC ||\n // leap calculation in UTC only\n (hasNewSafariBug && unit === 'FullYear')) {\n return date['setUTC' + unit](value);\n }\n // Else, local time\n return date['set' + unit](value);\n };\n /**\n * Update the Time object with current options. It is called internally on\n * initializing Highcharts, after running `Highcharts.setOptions` and on\n * `Chart.update`.\n *\n * @private\n * @function Highcharts.Time#update\n *\n * @param {Highcharts.TimeOptions} [options]\n *\n */\n Time.prototype.update = function (options) {\n if (options === void 0) { options = {}; }\n var useUTC = pick(options.useUTC,\n true);\n this.options = options = merge(true, this.options, options);\n // Allow using a different Date class\n this.Date = options.Date || win.Date || Date;\n this.useUTC = useUTC;\n this.timezoneOffset = (useUTC && options.timezoneOffset) || void 0;\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n /*\n * The time object has options allowing for variable time zones, meaning\n * the axis ticks or series data needs to consider this.\n */\n this.variableTimezone = useUTC && !!(options.getTimezoneOffset ||\n options.timezone);\n };\n /**\n * Make a time and returns milliseconds. Interprets the inputs as UTC time,\n * local time or a specific timezone time depending on the current time\n * settings.\n *\n * @function Highcharts.Time#makeTime\n *\n * @param {number} year\n * The year\n *\n * @param {number} month\n * The month. Zero-based, so January is 0.\n *\n * @param {number} [date=1]\n * The day of the month\n *\n * @param {number} [hours=0]\n * The hour of the day, 0-23.\n *\n * @param {number} [minutes=0]\n * The minutes\n *\n * @param {number} [seconds=0]\n * The seconds\n *\n * @return {number}\n * The time in milliseconds since January 1st 1970.\n */\n Time.prototype.makeTime = function (year, month, date, hours, minutes, seconds) {\n var d,\n offset,\n newOffset;\n if (this.useUTC) {\n d = this.Date.UTC.apply(0, arguments);\n offset = this.getTimezoneOffset(d);\n d += offset;\n newOffset = this.getTimezoneOffset(d);\n if (offset !== newOffset) {\n d += newOffset - offset;\n // A special case for transitioning from summer time to winter time.\n // When the clock is set back, the same time is repeated twice, i.e.\n // 02:30 am is repeated since the clock is set back from 3 am to\n // 2 am. We need to make the same time as local Date does.\n }\n else if (offset - 36e5 === this.getTimezoneOffset(d - 36e5) &&\n !hasOldSafariBug) {\n d -= 36e5;\n }\n }\n else {\n d = new this.Date(year, month, pick(date, 1), pick(hours, 0), pick(minutes, 0), pick(seconds, 0)).getTime();\n }\n return d;\n };\n /**\n * Sets the getTimezoneOffset function. If the `timezone` option is set, a\n * default getTimezoneOffset function with that timezone is returned. If\n * a `getTimezoneOffset` option is defined, it is returned. If neither are\n * specified, the function using the `timezoneOffset` option or 0 offset is\n * returned.\n *\n * @private\n * @function Highcharts.Time#timezoneOffsetFunction\n *\n * @return {Function}\n * A getTimezoneOffset function\n */\n Time.prototype.timezoneOffsetFunction = function () {\n var time = this,\n options = this.options,\n getTimezoneOffset = options.getTimezoneOffset,\n moment = options.moment || win.moment;\n if (!this.useUTC) {\n return function (timestamp) {\n return new Date(timestamp.toString()).getTimezoneOffset() * 60000;\n };\n }\n if (options.timezone) {\n if (!moment) {\n // getTimezoneOffset-function stays undefined because it depends\n // on Moment.js\n error(25);\n }\n else {\n return function (timestamp) {\n return -moment.tz(timestamp, options.timezone).utcOffset() * 60000;\n };\n }\n }\n // If not timezone is set, look for the getTimezoneOffset callback\n if (this.useUTC && getTimezoneOffset) {\n return function (timestamp) {\n return getTimezoneOffset(timestamp.valueOf()) * 60000;\n };\n }\n // Last, use the `timezoneOffset` option if set\n return function () {\n return (time.timezoneOffset || 0) * 60000;\n };\n };\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970)\n * into a human readable date string. The available format keys are listed\n * below. Additional formats can be given in the\n * {@link Highcharts.dateFormats} hook.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @example\n * const time = new Highcharts.Time();\n * const s = time.dateFormat('%Y-%m-%d %H:%M:%S', Date.UTC(2020, 0, 1));\n * console.log(s); // => 2020-01-01 00:00:00\n *\n * @function Highcharts.Time#dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are\n * prefixed with %.\n *\n * @param {number} [timestamp]\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n Time.prototype.dateFormat = function (format, timestamp, capitalize) {\n if (!defined(timestamp) || isNaN(timestamp)) {\n return (H.defaultOptions.lang &&\n H.defaultOptions.lang.invalidDate ||\n '');\n }\n format = pick(format, '%Y-%m-%d %H:%M:%S');\n var time = this, date = new this.Date(timestamp), \n // get the basic time values\n hours = this.get('Hours', date), day = this.get('Day', date), dayOfMonth = this.get('Date', date), month = this.get('Month', date), fullYear = this.get('FullYear', date), lang = H.defaultOptions.lang, langWeekdays = (lang && lang.weekdays), shortWeekdays = (lang && lang.shortWeekdays), \n // List all format keys. Custom formats can be added from the\n // outside.\n replacements = extend({\n // Day\n // Short weekday, like 'Mon'\n a: shortWeekdays ?\n shortWeekdays[day] :\n langWeekdays[day].substr(0, 3),\n // Long weekday, like 'Monday'\n A: langWeekdays[day],\n // Two digit day of the month, 01 to 31\n d: pad(dayOfMonth),\n // Day of the month, 1 through 31\n e: pad(dayOfMonth, 2, ' '),\n // Day of the week, 0 through 6\n w: day,\n // Week (none implemented)\n // 'W': weekNumber(),\n // Month\n // Short month, like 'Jan'\n b: lang.shortMonths[month],\n // Long month, like 'January'\n B: lang.months[month],\n // Two digit month number, 01 through 12\n m: pad(month + 1),\n // Month number, 1 through 12 (#8150)\n o: month + 1,\n // Year\n // Two digits year, like 09 for 2009\n y: fullYear.toString().substr(2, 2),\n // Four digits year, like 2009\n Y: fullYear,\n // Time\n // Two digits hours in 24h format, 00 through 23\n H: pad(hours),\n // Hours in 24h format, 0 through 23\n k: hours,\n // Two digits hours in 12h format, 00 through 11\n I: pad((hours % 12) || 12),\n // Hours in 12h format, 1 through 12\n l: (hours % 12) || 12,\n // Two digits minutes, 00 through 59\n M: pad(this.get('Minutes', date)),\n // Upper case AM or PM\n p: hours < 12 ? 'AM' : 'PM',\n // Lower case AM or PM\n P: hours < 12 ? 'am' : 'pm',\n // Two digits seconds, 00 through 59\n S: pad(date.getSeconds()),\n // Milliseconds (naming from Ruby)\n L: pad(Math.floor(timestamp % 1000), 3)\n }, H.dateFormats);\n // Do the replaces\n objectEach(replacements, function (val, key) {\n // Regex would do it in one line, but this is faster\n while (format.indexOf('%' + key) !== -1) {\n format = format.replace('%' + key, typeof val === 'function' ? val.call(time, timestamp) : val);\n }\n });\n // Optionally capitalize the string and return\n return capitalize ?\n (format.substr(0, 1).toUpperCase() +\n format.substr(1)) :\n format;\n };\n /**\n * Resolve legacy formats of dateTimeLabelFormats (strings and arrays) into\n * an object.\n * @private\n * @param {string|Array|Highcharts.Dictionary} f\n * General format description\n * @return {Highcharts.Dictionary}\n * The object definition\n */\n Time.prototype.resolveDTLFormat = function (f) {\n if (!isObject(f, true)) { // check for string or array\n f = splat(f);\n return {\n main: f[0],\n from: f[1],\n to: f[2]\n };\n }\n return f;\n };\n /**\n * Return an array with time positions distributed on round time values\n * right and right after min and max. Used in datetime axes as well as for\n * grouping data on a datetime axis.\n *\n * @function Highcharts.Time#getTimeTicks\n *\n * @param {Highcharts.TimeNormalizedObject} normalizedInterval\n * The interval in axis values (ms) and the count\n *\n * @param {number} [min]\n * The minimum in axis values\n *\n * @param {number} [max]\n * The maximum in axis values\n *\n * @param {number} [startOfWeek=1]\n *\n * @return {Highcharts.AxisTickPositionsArray}\n * Time positions\n */\n Time.prototype.getTimeTicks = function (normalizedInterval, min, max, startOfWeek) {\n var time = this,\n Date = time.Date,\n tickPositions = [],\n higherRanks = {}, \n // When crossing DST, use the max. Resolves #6278.\n minDate = new Date(min),\n interval = normalizedInterval.unitRange,\n count = normalizedInterval.count || 1;\n var i,\n minYear, // used in months and years as a basis for Date.UTC()\n variableDayLength,\n minDay;\n startOfWeek = pick(startOfWeek, 1);\n if (defined(min)) { // #1300\n time.set('Milliseconds', minDate, interval >= timeUnits.second ?\n 0 : // #3935\n count * Math.floor(time.get('Milliseconds', minDate) / count)); // #3652, #3654\n if (interval >= timeUnits.second) { // second\n time.set('Seconds', minDate, interval >= timeUnits.minute ?\n 0 : // #3935\n count * Math.floor(time.get('Seconds', minDate) / count));\n }\n if (interval >= timeUnits.minute) { // minute\n time.set('Minutes', minDate, interval >= timeUnits.hour ?\n 0 :\n count * Math.floor(time.get('Minutes', minDate) / count));\n }\n if (interval >= timeUnits.hour) { // hour\n time.set('Hours', minDate, interval >= timeUnits.day ?\n 0 :\n count * Math.floor(time.get('Hours', minDate) / count));\n }\n if (interval >= timeUnits.day) { // day\n time.set('Date', minDate, interval >= timeUnits.month ?\n 1 :\n Math.max(1, count * Math.floor(time.get('Date', minDate) / count)));\n }\n if (interval >= timeUnits.month) { // month\n time.set('Month', minDate, interval >= timeUnits.year ? 0 :\n count * Math.floor(time.get('Month', minDate) / count));\n minYear = time.get('FullYear', minDate);\n }\n if (interval >= timeUnits.year) { // year\n minYear -= minYear % count;\n time.set('FullYear', minDate, minYear);\n }\n // week is a special case that runs outside the hierarchy\n if (interval === timeUnits.week) {\n // get start of current week, independent of count\n minDay = time.get('Day', minDate);\n time.set('Date', minDate, (time.get('Date', minDate) -\n minDay + startOfWeek +\n // We don't want to skip days that are before\n // startOfWeek (#7051)\n (minDay < startOfWeek ? -7 : 0)));\n }\n // Get basics for variable time spans\n minYear = time.get('FullYear', minDate);\n var minMonth = time.get('Month', minDate), minDateDate = time.get('Date', minDate), minHours = time.get('Hours', minDate);\n // Redefine min to the floored/rounded minimum time (#7432)\n min = minDate.getTime();\n // Handle local timezone offset\n if ((time.variableTimezone || !time.useUTC) && defined(max)) {\n // Detect whether we need to take the DST crossover into\n // consideration. If we're crossing over DST, the day length may\n // be 23h or 25h and we need to compute the exact clock time for\n // each tick instead of just adding hours. This comes at a cost,\n // so first we find out if it is needed (#4951).\n variableDayLength = (\n // Long range, assume we're crossing over.\n max - min > 4 * timeUnits.month ||\n // Short range, check if min and max are in different time\n // zones.\n time.getTimezoneOffset(min) !==\n time.getTimezoneOffset(max));\n }\n // Iterate and add tick positions at appropriate values\n var t = minDate.getTime();\n i = 1;\n while (t < max) {\n tickPositions.push(t);\n // if the interval is years, use Date.UTC to increase years\n if (interval === timeUnits.year) {\n t = time.makeTime(minYear + i * count, 0);\n // if the interval is months, use Date.UTC to increase months\n }\n else if (interval === timeUnits.month) {\n t = time.makeTime(minYear, minMonth + i * count);\n // if we're using global time, the interval is not fixed as it\n // jumps one hour at the DST crossover\n }\n else if (variableDayLength &&\n (interval === timeUnits.day || interval === timeUnits.week)) {\n t = time.makeTime(minYear, minMonth, minDateDate +\n i * count * (interval === timeUnits.day ? 1 : 7));\n }\n else if (variableDayLength &&\n interval === timeUnits.hour &&\n count > 1) {\n // make sure higher ranks are preserved across DST (#6797,\n // #7621)\n t = time.makeTime(minYear, minMonth, minDateDate, minHours + i * count);\n // else, the interval is fixed and we use simple addition\n }\n else {\n t += interval * count;\n }\n i++;\n }\n // push the last time\n tickPositions.push(t);\n // Handle higher ranks. Mark new days if the time is on midnight\n // (#950, #1649, #1760, #3349). Use a reasonable dropout threshold\n // to prevent looping over dense data grouping (#6156).\n if (interval <= timeUnits.hour && tickPositions.length < 10000) {\n tickPositions.forEach(function (t) {\n if (\n // Speed optimization, no need to run dateFormat unless\n // we're on a full or half hour\n t % 1800000 === 0 &&\n // Check for local or global midnight\n time.dateFormat('%H%M%S%L', t) === '000000000') {\n higherRanks[t] = 'day';\n }\n });\n }\n }\n // record information on the chosen unit - for dynamic label formatter\n tickPositions.info = extend(normalizedInterval, {\n higherRanks: higherRanks,\n totalRange: interval * count\n });\n return tickPositions;\n };\n /**\n * Get the optimal date format for a point, based on a range.\n *\n * @private\n * @function Highcharts.Time#getDateFormat\n *\n * @param {number} range\n * The time range\n *\n * @param {number} timestamp\n * The timestamp of the date\n *\n * @param {number} startOfWeek\n * An integer representing the first day of the week, where 0 is\n * Sunday.\n *\n * @param {Highcharts.Dictionary} dateTimeLabelFormats\n * A map of time units to formats.\n *\n * @return {string}\n * The optimal date format for a point.\n */\n Time.prototype.getDateFormat = function (range, timestamp, startOfWeek, dateTimeLabelFormats) {\n var dateStr = this.dateFormat('%m-%d %H:%M:%S.%L', timestamp), blank = '01-01 00:00:00.000', strpos = {\n millisecond: 15,\n second: 12,\n minute: 9,\n hour: 6,\n day: 3\n };\n var n = 'millisecond', \n // for sub-millisecond data, #4223\n lastN = n;\n for (n in timeUnits) { // eslint-disable-line guard-for-in\n // If the range is exactly one week and we're looking at a\n // Sunday/Monday, go for the week format\n if (range === timeUnits.week &&\n +this.dateFormat('%w', timestamp) === startOfWeek &&\n dateStr.substr(6) === blank.substr(6)) {\n n = 'week';\n break;\n }\n // The first format that is too great for the range\n if (timeUnits[n] > range) {\n n = lastN;\n break;\n }\n // If the point is placed every day at 23:59, we need to show\n // the minutes as well. #2637.\n if (strpos[n] &&\n dateStr.substr(strpos[n]) !== blank.substr(strpos[n])) {\n break;\n }\n // Weeks are outside the hierarchy, only apply them on\n // Mondays/Sundays like in the first condition\n if (n !== 'week') {\n lastN = n;\n }\n }\n return this.resolveDTLFormat(dateTimeLabelFormats[n]).main;\n };\n return Time;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Normalized interval.\n *\n * @interface Highcharts.TimeNormalizedObject\n */ /**\n * The count.\n *\n * @name Highcharts.TimeNormalizedObject#count\n * @type {number|undefined}\n */ /**\n * The interval in axis values (ms).\n *\n * @name Highcharts.TimeNormalizedObject#unitRange\n * @type {number}\n */\n /**\n * Function of an additional date format specifier.\n *\n * @callback Highcharts.TimeFormatCallbackFunction\n *\n * @param {number} timestamp\n * The time to format.\n *\n * @return {string}\n * The formatted portion of the date.\n */\n /**\n * Time ticks.\n *\n * @interface Highcharts.AxisTickPositionsArray\n * @extends global.Array\n */ /**\n * @name Highcharts.AxisTickPositionsArray#info\n * @type {Highcharts.TimeTicksInfoObject|undefined}\n */\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @callback Highcharts.TimezoneOffsetCallbackFunction\n *\n * @param {number} timestamp\n * Timestamp in terms of milliseconds since January 1 1970.\n *\n * @return {number}\n * Timezone offset in minutes.\n */\n /**\n * Allows to manually load the `moment.js` library from Highcharts options\n * instead of the `window`.\n * In case of loading the library from a `script` tag,\n * this option is not needed, it will be loaded from there by default.\n *\n * @type {Function}\n * @since 8.2.0\n * @apioption time.moment\n */\n ''; // keeps doclets above in JS file\n\n return Time;\n });\n _registerModule(_modules, 'Core/Defaults.js', [_modules['Core/Chart/ChartDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Color/Palettes.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js']], function (ChartDefaults, Color, H, Palettes, Time, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var isTouchDevice = H.isTouchDevice,\n svg = H.svg;\n var merge = U.merge;\n /* *\n *\n * API Options\n *\n * */\n /**\n * Global default settings.\n *\n * @name Highcharts.defaultOptions\n * @type {Highcharts.Options}\n */ /**\n * @optionparent\n * @private\n */\n var defaultOptions = {\n /**\n * An array containing the default colors for the chart's series. When\n * all colors are used, new colors are pulled from the start again.\n *\n * Default colors can also be set on a series or series.type basis,\n * see [column.colors](#plotOptions.column.colors),\n * [pie.colors](#plotOptions.pie.colors).\n *\n * In styled mode, the colors option doesn't exist. Instead, colors\n * are defined in CSS and applied either through series or point class\n * names, or through the [chart.colorCount](#chart.colorCount) option.\n *\n *\n * ### Legacy\n *\n * In Highcharts 3.x, the default colors were:\n * ```js\n * colors: ['#2f7ed8', '#0d233a', '#8bbc21', '#910000', '#1aadce',\n * '#492970', '#f28f43', '#77a1e5', '#c42525', '#a6c96a']\n * ```\n *\n * In Highcharts 2.x, the default colors were:\n * ```js\n * colors: ['#4572A7', '#AA4643', '#89A54E', '#80699B', '#3D96AE',\n * '#DB843D', '#92A8CD', '#A47D7C', '#B5CA92']\n * ```\n *\n * @sample {highcharts} highcharts/chart/colors/\n * Assign a global color theme\n *\n * @type {Array<(Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject)>}\n * @default [\"#7cb5ec\", \"#434348\", \"#90ed7d\", \"#f7a35c\", \"#8085e9\",\n * \"#f15c80\", \"#e4d354\", \"#2b908f\", \"#f45b5b\", \"#91e8e1\"]\n */\n colors: Palettes.colors,\n /**\n * Styled mode only. Configuration object for adding SVG definitions for\n * reusable elements. See [gradients, shadows and\n * patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns)\n * for more information and code examples.\n *\n * @type {*}\n * @since 5.0.0\n * @apioption defs\n */\n /**\n * @ignore-option\n */\n symbols: ['circle', 'diamond', 'square', 'triangle', 'triangle-down'],\n /**\n * The language object is global and it can't be set on each chart\n * initialization. Instead, use `Highcharts.setOptions` to set it before any\n * chart is initialized.\n *\n * ```js\n * Highcharts.setOptions({\n * lang: {\n * months: [\n * 'Janvier', 'Février', 'Mars', 'Avril',\n * 'Mai', 'Juin', 'Juillet', 'Août',\n * 'Septembre', 'Octobre', 'Novembre', 'Décembre'\n * ],\n * weekdays: [\n * 'Dimanche', 'Lundi', 'Mardi', 'Mercredi',\n * 'Jeudi', 'Vendredi', 'Samedi'\n * ]\n * }\n * });\n * ```\n */\n lang: {\n /**\n * The loading text that appears when the chart is set into the loading\n * state following a call to `chart.showLoading`.\n */\n loading: 'Loading...',\n /**\n * An array containing the months names. Corresponds to the `%B` format\n * in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n * \"July\", \"August\", \"September\", \"October\", \"November\",\n * \"December\"]\n */\n months: [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July',\n 'August', 'September', 'October', 'November', 'December'\n ],\n /**\n * An array containing the months names in abbreviated form. Corresponds\n * to the `%b` format in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n * \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n */\n shortMonths: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',\n 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ],\n /**\n * An array containing the weekday names.\n *\n * @type {Array}\n * @default [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\",\n * \"Friday\", \"Saturday\"]\n */\n weekdays: [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday',\n 'Thursday', 'Friday', 'Saturday'\n ],\n /**\n * Short week days, starting Sunday. If not specified, Highcharts uses\n * the first three letters of the `lang.weekdays` option.\n *\n * @sample highcharts/lang/shortweekdays/\n * Finnish two-letter abbreviations\n *\n * @type {Array}\n * @since 4.2.4\n * @apioption lang.shortWeekdays\n */\n /**\n * What to show in a date field for invalid dates. Defaults to an empty\n * string.\n *\n * @type {string}\n * @since 4.1.8\n * @product highcharts highstock\n * @apioption lang.invalidDate\n */\n /**\n * The title appearing on hovering the zoom in button. The text itself\n * defaults to \"+\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom in\n * @product highmaps\n * @apioption lang.zoomIn\n */\n /**\n * The title appearing on hovering the zoom out button. The text itself\n * defaults to \"-\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom out\n * @product highmaps\n * @apioption lang.zoomOut\n */\n /**\n * The default decimal point used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments.\n *\n * @since 1.2.2\n */\n decimalPoint: '.',\n /**\n * [Metric prefixes](https://en.wikipedia.org/wiki/Metric_prefix) used\n * to shorten high numbers in axis labels. Replacing any of the\n * positions with `null` causes the full number to be written. Setting\n * `numericSymbols` to `null` disables shortening altogether.\n *\n * @sample {highcharts} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n * @sample {highstock} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n *\n * @type {Array}\n * @default [\"k\", \"M\", \"G\", \"T\", \"P\", \"E\"]\n * @since 2.3.0\n */\n numericSymbols: ['k', 'M', 'G', 'T', 'P', 'E'],\n /**\n * The magnitude of [numericSymbols](#lang.numericSymbol) replacements.\n * Use 10000 for Japanese, Korean and various Chinese locales, which\n * use symbols for 10^4, 10^8 and 10^12.\n *\n * @sample highcharts/lang/numericsymbolmagnitude/\n * 10000 magnitude for Japanese\n *\n * @type {number}\n * @default 1000\n * @since 5.0.3\n * @apioption lang.numericSymbolMagnitude\n */\n /**\n * The text for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoom: 'Reset zoom',\n /**\n * The tooltip title for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoomTitle: 'Reset zoom level 1:1',\n /**\n * The default thousands separator used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments. Defaults\n * to a single space character, which is recommended in\n * [ISO 31-0](https://en.wikipedia.org/wiki/ISO_31-0#Numbers) and works\n * across Anglo-American and continental European languages.\n *\n * @default \\u0020\n * @since 1.2.2\n */\n thousandsSep: ' '\n },\n /**\n * Global options that don't apply to each chart. These options, like\n * the `lang` options, must be set using the `Highcharts.setOptions`\n * method.\n *\n * ```js\n * Highcharts.setOptions({\n * global: {\n * useUTC: false\n * }\n * });\n * ```\n */\n /**\n * _Canvg rendering for Android 2.x is removed as of Highcharts 5.0\\.\n * Use the [libURL](#exporting.libURL) option to configure exporting._\n *\n * The URL to the additional file to lazy load for Android 2.x devices.\n * These devices don't support SVG, so we download a helper file that\n * contains [canvg](https://github.com/canvg/canvg), its dependency\n * rbcolor, and our own CanVG Renderer class. To avoid hotlinking to\n * our site, you can install canvas-tools.js on your own server and\n * change this option accordingly.\n *\n * @deprecated\n *\n * @type {string}\n * @default https://code.highcharts.com/{version}/modules/canvas-tools.js\n * @product highcharts highmaps\n * @apioption global.canvasToolsURL\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.useUTC](#time.useUTC) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {boolean}\n * @apioption global.useUTC\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.Date](#time.Date) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.Date\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.getTimezoneOffset](#time.getTimezoneOffset) that supports\n * individual time settings per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.getTimezoneOffset\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezone](#time.timezone) that supports individual time\n * settings per chart.\n *\n * @deprecated\n *\n * @type {string}\n * @product highcharts highstock\n * @apioption global.timezone\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezoneOffset](#time.timezoneOffset) that supports individual\n * time settings per chart.\n *\n * @deprecated\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption global.timezoneOffset\n */\n global: {},\n /**\n * Time options that can apply globally or to individual charts. These\n * settings affect how `datetime` axes are laid out, how tooltips are\n * formatted, how series\n * [pointIntervalUnit](#plotOptions.series.pointIntervalUnit) works and how\n * the Highcharts Stock range selector handles time.\n *\n * The common use case is that all charts in the same Highcharts object\n * share the same time settings, in which case the global settings are set\n * using `setOptions`.\n *\n * ```js\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n * ```\n *\n * Since v6.0.5, the time options were moved from the `global` obect to the\n * `time` object, and time options can be set on each individual chart.\n *\n * @sample {highcharts|highstock}\n * highcharts/time/timezone/\n * Set the timezone globally\n * @sample {highcharts}\n * highcharts/time/individual/\n * Set the timezone per chart instance\n * @sample {highstock}\n * stock/time/individual/\n * Set the timezone per chart instance\n *\n * @since 6.0.5\n * @optionparent time\n */\n time: {\n /**\n * A custom `Date` class for advanced date handling. For example,\n * [JDate](https://github.com/tahajahangir/jdate) can be hooked in to\n * handle Jalali dates.\n *\n * @type {*}\n * @since 4.0.4\n * @product highcharts highstock gantt\n */\n Date: void 0,\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @see [global.timezoneOffset](#global.timezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/gettimezoneoffset/\n * Use moment.js to draw Oslo time regardless of browser locale\n *\n * @type {Highcharts.TimezoneOffsetCallbackFunction}\n * @since 4.1.0\n * @product highcharts highstock gantt\n */\n getTimezoneOffset: void 0,\n /**\n * Requires [moment.js](https://momentjs.com/). If the timezone option\n * is specified, it creates a default\n * [getTimezoneOffset](#time.getTimezoneOffset) function that looks\n * up the specified timezone in moment.js. If moment.js is not included,\n * this throws a Highcharts error in the console, but does not crash the\n * chart.\n *\n * @see [getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezone/\n * Europe/Oslo\n *\n * @type {string}\n * @since 5.0.7\n * @product highcharts highstock gantt\n */\n timezone: void 0,\n /**\n * The timezone offset in minutes. Positive values are west, negative\n * values are east of UTC, as in the ECMAScript\n * [getTimezoneOffset](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)\n * method. Use this to display UTC based data in a predefined time zone.\n *\n * @see [time.getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezoneoffset/\n * Timezone offset\n *\n * @since 3.0.8\n * @product highcharts highstock gantt\n */\n timezoneOffset: 0,\n /**\n * Whether to use UTC time for axis scaling, tickmark placement and\n * time display in `Highcharts.dateFormat`. Advantages of using UTC\n * is that the time displays equally regardless of the user agent's\n * time zone settings. Local time can be used when the data is loaded\n * in real time or when correct Daylight Saving Time transitions are\n * required.\n *\n * @sample {highcharts} highcharts/time/useutc-true/\n * True by default\n * @sample {highcharts} highcharts/time/useutc-false/\n * False\n */\n useUTC: true\n },\n chart: ChartDefaults,\n /**\n * The chart's main title.\n *\n * @sample {highmaps} maps/title/title/\n * Title options demonstrated\n */\n title: {\n /**\n * When the title is floating, the plot area will not move to make space\n * for it.\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * False by default\n * @sample {highcharts} highcharts/title/floating/\n * True - title on top of the plot area\n * @sample {highstock} stock/chart/title-floating/\n * True - title on top of the plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption title.floating\n */\n /**\n * CSS styles for the title. Use this for font styling, but use `align`,\n * `x` and `y` for text alignment.\n *\n * In styled mode, the title style is given in the `.highcharts-title`\n * class.\n *\n * @sample {highcharts} highcharts/title/style/\n * Custom color and weight\n * @sample {highstock} stock/chart/title-style/\n * Custom color and weight\n * @sample highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {highcharts|highmaps} { \"color\": \"#333333\", \"fontSize\": \"18px\" }\n * @default {highstock} { \"color\": \"#333333\", \"fontSize\": \"16px\" }\n * @apioption title.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption title.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When a value is given, the title behaves\n * as if [floating](#title.floating) were `true`.\n *\n * @sample {highcharts} highcharts/title/verticalalign/\n * Chart title in bottom right corner\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption title.verticalAlign\n */\n /**\n * The x position of the title relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption title.x\n */\n /**\n * The y position of the title relative to the alignment within\n * [chart.spacingTop](#chart.spacingTop) and [chart.spacingBottom](\n * #chart.spacingBottom). By default it depends on the font size.\n *\n * @sample {highcharts} highcharts/title/y/\n * Title inside the plot area\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {number}\n * @since 2.0\n * @apioption title.y\n */\n /**\n * The title of the chart. To disable the title, set the `text` to\n * `undefined`.\n *\n * @sample {highcharts} highcharts/title/text/\n * Custom title\n * @sample {highstock} stock/chart/title-text/\n * Custom title\n *\n * @default {highcharts|highmaps} Chart title\n * @default {highstock} undefined\n */\n text: 'Chart title',\n /**\n * The horizontal alignment of the title. Can be one of \"left\", \"center\"\n * and \"right\".\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * The margin between the title and the plot area, or if a subtitle\n * is present, the margin between the subtitle and the plot area.\n *\n * @sample {highcharts} highcharts/title/margin-50/\n * A chart title margin of 50\n * @sample {highcharts} highcharts/title/margin-subtitle/\n * The same margin applied with a subtitle\n * @sample {highstock} stock/chart/title-margin/\n * A chart title margin of 50\n *\n * @since 2.1\n */\n margin: 15,\n /**\n * Adjustment made to the title width, normally to reserve space for\n * the exporting burger menu.\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's subtitle. This can be used both to display a subtitle below\n * the main title, and to display random text anywhere in the chart. The\n * subtitle can be updated after chart initialization through the\n * `Chart.setTitle` method.\n *\n * @sample {highmaps} maps/title/subtitle/\n * Subtitle options demonstrated\n */\n subtitle: {\n /**\n * When the subtitle is floating, the plot area will not move to make\n * space for it.\n *\n * @sample {highcharts} highcharts/subtitle/floating/\n * Floating title and subtitle\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote floating at bottom right of plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption subtitle.floating\n */\n /**\n * CSS styles for the title.\n *\n * In styled mode, the subtitle style is given in the\n * `.highcharts-subtitle` class.\n *\n * @sample {highcharts} highcharts/subtitle/style/\n * Custom color and weight\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n * @sample {highstock} stock/chart/subtitle-style\n * Custom color and weight\n * @sample {highstock} highcharts/css/titles/\n * Styled mode\n * @sample {highmaps} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption subtitle.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption subtitle.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the subtitle behaves as\n * floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption subtitle.verticalAlign\n */\n /**\n * The x position of the subtitle relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption subtitle.x\n */\n /**\n * The y position of the subtitle relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`. By default the subtitle\n * is laid out below the title unless the title is floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @since 2.0\n * @apioption subtitle.y\n */\n /**\n * The subtitle of the chart.\n *\n * @sample {highcharts|highstock} highcharts/subtitle/text/\n * Custom subtitle\n * @sample {highcharts|highstock} highcharts/subtitle/text-formatted/\n * Formatted and linked text.\n */\n text: '',\n /**\n * The horizontal alignment of the subtitle. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at bottom right of plot area\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * Adjustment made to the subtitle width, normally to reserve space\n * for the exporting burger menu.\n *\n * @see [title.widthAdjust](#title.widthAdjust)\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's caption, which will render below the chart and will be part\n * of exported charts. The caption can be updated after chart initialization\n * through the `Chart.update` or `Chart.caption.update` methods.\n *\n * @sample highcharts/caption/text/\n * A chart with a caption\n * @since 7.2.0\n */\n caption: {\n /**\n * When the caption is floating, the plot area will not move to make\n * space for it.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.floating\n */\n /**\n * The margin between the caption and the plot area.\n */\n margin: 15,\n /**\n * CSS styles for the caption.\n *\n * In styled mode, the caption style is given in the\n * `.highcharts-caption` class.\n *\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption caption.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.useHTML\n */\n /**\n * The x position of the caption relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @type {number}\n * @default 0\n * @apioption caption.x\n */\n /**\n * The y position of the caption relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`.\n *\n * @type {number}\n * @apioption caption.y\n */\n /**\n * The caption text of the chart.\n *\n * @sample {highcharts} highcharts/caption/text/\n * Custom caption\n */\n text: '',\n /**\n * The horizontal alignment of the caption. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'left',\n /**\n * The vertical alignment of the caption. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the caption behaves as\n * floating.\n *\n * @type {Highcharts.VerticalAlignValue}\n */\n verticalAlign: 'bottom'\n },\n /**\n * The plotOptions is a wrapper object for config objects for each series\n * type. The config objects for each series can also be overridden for\n * each series item as given in the series array.\n *\n * Configuration options for the series are given in three levels. Options\n * for all series in a chart are given in the [plotOptions.series](\n * #plotOptions.series) object. Then options for all series of a specific\n * type are given in the plotOptions of that type, for example\n * `plotOptions.line`. Next, options for one single series are given in\n * [the series array](#series).\n */\n plotOptions: {},\n /**\n * HTML labels that can be positioned anywhere in the chart area.\n *\n * This option is deprecated since v7.1.2. Instead, use\n * [annotations](#annotations) that support labels.\n *\n * @deprecated\n * @product highcharts highstock\n */\n labels: {\n /**\n * An HTML label that can be positioned anywhere in the chart area.\n *\n * @deprecated\n * @type {Array<*>}\n * @apioption labels.items\n */\n /**\n * Inner HTML or text for the label.\n *\n * @deprecated\n * @type {string}\n * @apioption labels.items.html\n */\n /**\n * CSS styles for each label. To position the label, use left and top\n * like this:\n * ```js\n * style: {\n * left: '100px',\n * top: '100px'\n * }\n * ```\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @apioption labels.items.style\n */\n /**\n * Shared CSS styles for all labels.\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"position\": \"absolute\"}\n */\n style: {\n /**\n * @ignore-option\n */\n position: 'absolute',\n /**\n * @ignore-option\n */\n color: \"#333333\" /* Palette.neutralColor80 */\n }\n },\n /**\n * The legend is a box containing a symbol and name for each series\n * item or point item in the chart. Each series (or points in case\n * of pie charts) is represented by a symbol and its name in the legend.\n *\n * It is possible to override the symbol creator function and create\n * [custom legend symbols](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/studies/legend-custom-symbol/).\n *\n * @productdesc {highmaps}\n * A Highmaps legend by default contains one legend item per series, but if\n * a `colorAxis` is defined, the axis will be displayed in the legend.\n * Either as a gradient, or as multiple legend items for `dataClasses`.\n */\n legend: {\n /**\n * The background color of the legend.\n *\n * @see In styled mode, the legend background fill can be applied with\n * the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/backgroundcolor/\n * Yellowish background\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption legend.backgroundColor\n */\n /**\n * The width of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke width can be applied\n * with the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/borderwidth/\n * 2px border width\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {number}\n * @default 0\n * @apioption legend.borderWidth\n */\n /**\n * Enable or disable the legend. There is also a series-specific option,\n * [showInLegend](#plotOptions.series.showInLegend), that can hide the\n * series from the legend. In some series types this is `false` by\n * default, so it must set to `true` in order to show the legend for the\n * series.\n *\n * @sample {highcharts} highcharts/legend/enabled-false/ Legend disabled\n * @sample {highstock} stock/legend/align/ Various legend options\n * @sample {highmaps} maps/legend/enabled-false/ Legend disabled\n *\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} false\n */\n enabled: true,\n /**\n * The horizontal alignment of the legend box within the chart area.\n * Valid values are `left`, `center` and `right`.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * @sample {highcharts} highcharts/legend/align/\n * Legend at the right of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * If the [layout](legend.layout) is `horizontal` and the legend items\n * span over two lines or more, whether to align the items into vertical\n * columns. Setting this to `false` makes room for more items, but will\n * look more messy.\n *\n * @since 6.1.0\n */\n alignColumns: true,\n /**\n * A CSS class name to apply to the legend group.\n */\n className: 'highcharts-no-tooltip',\n /**\n * When the legend is floating, the plot area ignores it and is allowed\n * to be placed below it.\n *\n * @sample {highcharts} highcharts/legend/floating-false/\n * False by default\n * @sample {highcharts} highcharts/legend/floating-true/\n * True\n * @sample {highmaps} maps/legend/alignment/\n * Floating legend\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption legend.floating\n */\n /**\n * The layout of the legend items. Can be one of `horizontal` or\n * `vertical` or `proximate`. When `proximate`, the legend items will be\n * placed as close as possible to the graphs they're representing,\n * except in inverted charts or when the legend position doesn't allow\n * it.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highcharts} highcharts/legend/layout-vertical/\n * Vertical\n * @sample highcharts/legend/layout-proximate\n * Labels proximate to the data\n * @sample {highstock} stock/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Vertical with data classes\n * @sample {highmaps} maps/legend/layout-vertical/\n * Vertical with color axis gradient\n *\n * @validvalue [\"horizontal\", \"vertical\", \"proximate\"]\n */\n layout: 'horizontal',\n /**\n * In a legend with horizontal layout, the itemDistance defines the\n * pixel distance between each item.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * 50px item distance\n * @sample {highstock} highcharts/legend/layout-horizontal/\n * 50px item distance\n *\n * @type {number}\n * @default {highcharts} 20\n * @default {highstock} 20\n * @default {highmaps} 8\n * @since 3.0.3\n * @apioption legend.itemDistance\n */\n /**\n * The pixel bottom margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginBottom\n */\n /**\n * The pixel top margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginTop\n */\n /**\n * The width for each legend item. By default the items are laid out\n * successively. In a [horizontal layout](legend.layout), if the items\n * are laid out across two rows or more, they will be vertically aligned\n * depending on the [legend.alignColumns](legend.alignColumns) option.\n *\n * @sample {highcharts} highcharts/legend/itemwidth-default/\n * Undefined by default\n * @sample {highcharts} highcharts/legend/itemwidth-80/\n * 80 for aligned legend items\n *\n * @type {number}\n * @since 2.0\n * @apioption legend.itemWidth\n */\n /**\n * A [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for each legend label. Available variables relates to properties on\n * the series, or the point in case of pies.\n *\n * @type {string}\n * @default {name}\n * @since 1.3\n * @apioption legend.labelFormat\n */\n /* eslint-disable valid-jsdoc */\n /**\n * Callback function to format each of the series' labels. The `this`\n * keyword refers to the series object, or the point object in case of\n * pie charts. By default the series or point name is printed.\n *\n * @productdesc {highmaps}\n * In Highmaps the context can also be a data class in case of a\n * `colorAxis`.\n *\n * @sample {highcharts} highcharts/legend/labelformatter/\n * Add text\n * @sample {highmaps} maps/legend/labelformatter/\n * Data classes with label formatter\n *\n * @type {Highcharts.FormatterCallbackFunction}\n */\n labelFormatter: function () {\n /** eslint-enable valid-jsdoc */\n return this.name;\n },\n /**\n * Line height for the legend items. Deprecated as of 2.1\\. Instead,\n * the line height for each item can be set using\n * `itemStyle.lineHeight`, and the padding between items using\n * `itemMarginTop` and `itemMarginBottom`.\n *\n * @sample {highcharts} highcharts/legend/lineheight/\n * Setting padding\n *\n * @deprecated\n *\n * @type {number}\n * @default 16\n * @since 2.0\n * @product highcharts gantt\n * @apioption legend.lineHeight\n */\n /**\n * If the plot area sized is calculated automatically and the legend is\n * not floating, the legend margin is the space between the legend and\n * the axis labels or plot area.\n *\n * @sample {highcharts} highcharts/legend/margin-default/\n * 12 pixels by default\n * @sample {highcharts} highcharts/legend/margin-30/\n * 30 pixels\n *\n * @type {number}\n * @default 12\n * @since 2.1\n * @apioption legend.margin\n */\n /**\n * Maximum pixel height for the legend. When the maximum height is\n * extended, navigation will show.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption legend.maxHeight\n */\n /**\n * The color of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke can be applied with the\n * `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/bordercolor/\n * Brown border\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The border corner radius of the legend.\n *\n * @sample {highcharts} highcharts/legend/borderradius-default/\n * Square by default\n * @sample {highcharts} highcharts/legend/borderradius-round/\n * 5px rounded\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n */\n borderRadius: 0,\n /**\n * Options for the paging or navigation appearing when the legend is\n * overflown. Navigation works well on screen, but not in static\n * exported images. One way of working around that is to\n * [increase the chart height in\n * export](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/legend/navigation-enabled-false/).\n */\n navigation: {\n /**\n * How to animate the pages when navigating up or down. A value of\n * `true` applies the default navigation given in the\n * `chart.animation` option. Additional options can be given as an\n * object containing values for easing and duration.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {boolean|Partial}\n * @default true\n * @since 2.2.4\n * @apioption legend.navigation.animation\n */\n /**\n * The pixel size of the up and down arrows in the legend paging\n * navigation.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {number}\n * @default 12\n * @since 2.2.4\n * @apioption legend.navigation.arrowSize\n */\n /**\n * Whether to enable the legend navigation. In most cases, disabling\n * the navigation results in an unwanted overflow.\n *\n * See also the\n * [adapt chart to legend](https://github.com/highcharts/adapt-chart-to-legend)\n * plugin for a solution to extend the chart height to make room for\n * the legend, optionally in exported charts only.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.4\n * @apioption legend.navigation.enabled\n */\n /**\n * Text styles for the legend page navigation.\n *\n * @see In styled mode, the navigation items are styled with the\n * `.highcharts-legend-navigation` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.CSSObject}\n * @since 2.2.4\n * @apioption legend.navigation.style\n */\n /**\n * The color for the active up or down arrow in the legend page\n * navigation.\n *\n * @see In styled mode, the active arrow be styled with the\n * `.highcharts-legend-nav-active` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n activeColor: \"#003399\" /* Palette.highlightColor100 */,\n /**\n * The color of the inactive up or down arrow in the legend page\n * navigation. .\n *\n * @see In styled mode, the inactive arrow be styled with the\n * `.highcharts-legend-nav-inactive` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n inactiveColor: \"#cccccc\" /* Palette.neutralColor20 */\n },\n /**\n * The inner padding of the legend box.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 8\n * @since 2.2.0\n * @apioption legend.padding\n */\n /**\n * Whether to reverse the order of the legend items compared to the\n * order of the series or points as defined in the configuration object.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks),\n * [series.legendIndex](#series.legendIndex)\n *\n * @sample {highcharts} highcharts/legend/reversed/\n * Stacked bar with reversed legend\n *\n * @type {boolean}\n * @default false\n * @since 1.2.5\n * @apioption legend.reversed\n */\n /**\n * Whether to show the symbol on the right side of the text rather than\n * the left side. This is common in Arabic and Hebrew.\n *\n * @sample {highcharts} highcharts/legend/rtl/\n * Symbol to the right\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption legend.rtl\n */\n /**\n * CSS styles for the legend area. In the 1.x versions the position\n * of the legend area was determined by CSS. In 2.x, the position is\n * determined by properties like `align`, `verticalAlign`, `x` and `y`,\n * but the styles are still parsed for backwards compatibility.\n *\n * @deprecated\n *\n * @type {Highcharts.CSSObject}\n * @product highcharts highstock\n * @apioption legend.style\n */\n /**\n * CSS styles for each legend item. Only a subset of CSS is supported,\n * notably those options related to text. The default `textOverflow`\n * property makes long texts truncate. Set it to `undefined` to wrap\n * text instead. A `width` property can be added to control the text\n * width.\n *\n * @see In styled mode, the legend items can be styled with the\n * `.highcharts-legend-item` class.\n *\n * @sample {highcharts} highcharts/legend/itemstyle/\n * Bold black text\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"cursor\": \"pointer\", \"fontSize\": \"12px\", \"fontWeight\": \"bold\", \"textOverflow\": \"ellipsis\"}\n */\n itemStyle: {\n /**\n * @ignore\n */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * @ignore\n */\n cursor: 'pointer',\n /**\n * @ignore\n */\n fontSize: '12px',\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n textOverflow: 'ellipsis'\n },\n /**\n * CSS styles for each legend item in hover mode. Only a subset of\n * CSS is supported, notably those options related to text. Properties\n * are inherited from `style` unless overridden here.\n *\n * @see In styled mode, the hovered legend items can be styled with\n * the `.highcharts-legend-item:hover` pesudo-class.\n *\n * @sample {highcharts} highcharts/legend/itemhoverstyle/\n * Red on hover\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#000000\"}\n */\n itemHoverStyle: {\n /**\n * @ignore\n */\n color: \"#000000\" /* Palette.neutralColor100 */\n },\n /**\n * CSS styles for each legend item when the corresponding series or\n * point is hidden. Only a subset of CSS is supported, notably those\n * options related to text. Properties are inherited from `style`\n * unless overridden here.\n *\n * @see In styled mode, the hidden legend items can be styled with\n * the `.highcharts-legend-item-hidden` class.\n *\n * @sample {highcharts} highcharts/legend/itemhiddenstyle/\n * Darker gray color\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#cccccc\"}\n */\n itemHiddenStyle: {\n /**\n * @ignore\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */\n },\n /**\n * Whether to apply a drop shadow to the legend. A `backgroundColor`\n * also needs to be applied for this to take effect. The shadow can be\n * an object configuration containing `color`, `offsetX`, `offsetY`,\n * `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/legend/shadow/\n * White background and drop shadow\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {boolean|Highcharts.CSSObject}\n */\n shadow: false,\n /**\n * Default styling for the checkbox next to a legend item when\n * `showCheckbox` is true.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"width\": \"13px\", \"height\": \"13px\", \"position\":\"absolute\"}\n */\n itemCheckboxStyle: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n width: '13px',\n /**\n * @ignore\n */\n height: '13px'\n },\n // itemWidth: undefined,\n /**\n * When this is true, the legend symbol width will be the same as\n * the symbol height, which in turn defaults to the font size of the\n * legend items.\n *\n * @since 5.0.0\n */\n squareSymbol: true,\n /**\n * The pixel height of the symbol for series types that use a rectangle\n * in the legend. Defaults to the font size of legend items.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a vertical color\n * axis, the height defaults to 200.\n *\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * No distance between data classes\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolHeight\n */\n /**\n * The border radius of the symbol for series types that use a rectangle\n * in the legend. Defaults to half the `symbolHeight`.\n *\n * @sample {highcharts} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highstock} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highmaps} highcharts/legend/symbolradius/\n * Round symbols\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolRadius\n */\n /**\n * The pixel width of the legend item symbol. When the `squareSymbol`\n * option is set, this defaults to the `symbolHeight`, otherwise 16.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a horizontal color\n * axis, the width defaults to 200.\n *\n * @sample {highcharts} highcharts/legend/symbolwidth/\n * Greater symbol width and padding\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n *\n * @type {number}\n * @apioption legend.symbolWidth\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the legend item texts.\n *\n * Prior to 4.1.7, when using HTML, [legend.navigation](\n * #legend.navigation) was disabled.\n *\n * @type {boolean}\n * @default false\n * @apioption legend.useHTML\n */\n /**\n * For a color axis with data classes, how many decimals to render in\n * the legend. The default preserves the decimals of the range numbers.\n *\n * @type {number}\n * @default -1\n * @product highcharts highmaps\n * @apioption legend.valueDecimals\n */\n /**\n * For a color axis with data classes, a suffix for the range numbers in\n * the legend.\n *\n * @type {string}\n * @default ''\n * @product highcharts highmaps\n * @apioption legend.valueSuffix\n */\n /**\n * The width of the legend box. If a number is set, it translates to\n * pixels. Since v7.0.2 it allows setting a percent string of the full\n * chart width, for example `40%`.\n *\n * Defaults to the full chart width for legends below or above the\n * chart, half the chart width for legends to the left and right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n * @sample {highcharts} highcharts/legend/width-percent/\n * A percent of the chart width\n *\n * @type {number|string}\n * @since 2.0\n * @apioption legend.width\n */\n /**\n * The pixel padding between the legend item symbol and the legend\n * item text.\n *\n * @sample {highcharts} highcharts/legend/symbolpadding/\n * Greater symbol width and padding\n */\n symbolPadding: 5,\n /**\n * The vertical alignment of the legend box. Can be one of `top`,\n * `middle` or `bottom`. Vertical position can be further determined\n * by the `y` option.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * When the [layout](#legend.layout) option is `proximate`, the\n * `verticalAlign` option doesn't apply.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.0\n */\n verticalAlign: 'bottom',\n // width: undefined,\n /**\n * The x offset of the legend relative to its horizontal alignment\n * `align` within chart.spacingLeft and chart.spacingRight. Negative\n * x moves it to the left, positive x moves it to the right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n *\n * @since 2.0\n */\n x: 0,\n /**\n * The vertical offset of the legend relative to it's vertical alignment\n * `verticalAlign` within chart.spacingTop and chart.spacingBottom.\n * Negative y moves it up, positive y moves it down.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @since 2.0\n */\n y: 0,\n /**\n * A title to be added on top of the legend.\n *\n * @sample {highcharts} highcharts/legend/title/\n * Legend title\n * @sample {highmaps} maps/legend/alignment/\n * Legend with title\n *\n * @since 3.0\n */\n title: {\n /**\n * A text or HTML string for the title.\n *\n * @type {string}\n * @since 3.0\n * @apioption legend.title.text\n */\n /**\n * Generic CSS styles for the legend title.\n *\n * @see In styled mode, the legend title is styled with the\n * `.highcharts-legend-title` class.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\"}\n * @since 3.0\n */\n style: {\n /**\n * @ignore\n */\n fontWeight: 'bold'\n }\n }\n },\n /**\n * The loading options control the appearance of the loading screen\n * that covers the plot area on chart operations. This screen only\n * appears after an explicit call to `chart.showLoading()`. It is a\n * utility for developers to communicate to the end user that something\n * is going on, for example while retrieving new data via an XHR connection.\n * The \"Loading...\" text itself is not part of this configuration\n * object, but part of the `lang` object.\n */\n loading: {\n /**\n * The duration in milliseconds of the fade out effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.hideDuration\n */\n /**\n * The duration in milliseconds of the fade in effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.showDuration\n */\n /**\n * CSS styles for the loading label `span`.\n *\n * @see In styled mode, the loading label is styled with the\n * `.highcharts-loading-inner` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/labelstyle/\n * Vertically centered\n * @sample {highstock} stock/loading/general/\n * Label styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\", \"position\": \"relative\", \"top\": \"45%\"}\n * @since 1.2.0\n */\n labelStyle: {\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n position: 'relative',\n /**\n * @ignore\n */\n top: '45%'\n },\n /**\n * CSS styles for the loading screen that covers the plot area.\n *\n * In styled mode, the loading label is styled with the\n * `.highcharts-loading` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/style/\n * Gray plot area, white text\n * @sample {highstock} stock/loading/general/\n * Gray plot area, white text\n *\n * @type {Highcharts.CSSObject}\n * @default {\"position\": \"absolute\", \"backgroundColor\": \"#ffffff\", \"opacity\": 0.5, \"textAlign\": \"center\"}\n * @since 1.2.0\n */\n style: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * @ignore\n */\n opacity: 0.5,\n /**\n * @ignore\n */\n textAlign: 'center'\n }\n },\n /**\n * Options for the tooltip that appears when the user hovers over a\n * series or point.\n *\n * @declare Highcharts.TooltipOptions\n */\n tooltip: {\n /**\n * The color of the tooltip border. When `undefined`, the border takes\n * the color of the corresponding series or point.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * Follow series by default\n * @sample {highcharts} highcharts/tooltip/bordercolor-black/\n * Black border\n * @sample {highstock} stock/tooltip/general/\n * Styled tooltip\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption tooltip.borderColor\n */\n /**\n * A CSS class name to apply to the tooltip's container div,\n * allowing unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption tooltip.className\n */\n /**\n * Since 4.1, the crosshair definitions are moved to the Axis object\n * in order for a better separation from the tooltip. See\n * [xAxis.crosshair](#xAxis.crosshair).\n *\n * @sample {highcharts} highcharts/tooltip/crosshairs-x/\n * Enable a crosshair for the x value\n *\n * @deprecated\n *\n * @type {*}\n * @default true\n * @apioption tooltip.crosshairs\n */\n /**\n * Distance from point to tooltip in pixels.\n *\n * @type {number}\n * @default 16\n * @apioption tooltip.distance\n */\n /**\n * Whether the tooltip should follow the mouse as it moves across\n * columns, pie slices and other point types with an extent.\n * By default it behaves this way for pie, polygon, map, sankey\n * and wordcloud series by override in the `plotOptions`\n * for those series types.\n *\n * Does not apply if [split](#tooltip.split) is `true`.\n *\n * For touch moves to behave the same way, [followTouchMove](\n * #tooltip.followTouchMove) must be `true` also.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @since 3.0\n * @apioption tooltip.followPointer\n */\n /**\n * Whether the tooltip should update as the finger moves on a touch\n * device. If this is `true` and [chart.panning](#chart.panning) is\n * set,`followTouchMove` will take over one-finger touches, so the user\n * needs to use two fingers for zooming and panning.\n *\n * Note the difference to [followPointer](#tooltip.followPointer) that\n * only defines the _position_ of the tooltip. If `followPointer` is\n * false in for example a column series, the tooltip will show above or\n * below the column, but as `followTouchMove` is true, the tooltip will\n * jump from column to column as the user swipes across the plot area.\n *\n * @type {boolean}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 3.0.1\n * @apioption tooltip.followTouchMove\n */\n /**\n * Callback function to format the text of the tooltip from scratch. In\n * case of single or [shared](#tooltip.shared) tooltips, a string should\n * be returned. In case of [split](#tooltip.split) tooltips, it should\n * return an array where the first item is the header, and subsequent\n * items are mapped to the points. Return `false` to disable tooltip for\n * a specific point on series.\n *\n * A subset of HTML is supported. Unless `useHTML` is true, the HTML of\n * the tooltip is parsed and converted to SVG, therefore this isn't a\n * complete HTML renderer. The following HTML tags are supported: `b`,\n * `br`, `em`, `i`, `span`, `strong`. Spans can be styled with a `style`\n * attribute, but only text-related CSS, that is shared with SVG, is\n * handled.\n *\n * The available data in the formatter differ a bit depending on whether\n * the tooltip is shared or split, or belongs to a single point. In a\n * shared/split tooltip, all properties except `x`, which is common for\n * all points, are kept in an array, `this.points`.\n *\n * Available data are:\n *\n * - **this.percentage (not shared) /**\n * **this.points[i].percentage (shared)**:\n * Stacked series and pies only. The point's percentage of the total.\n *\n * - **this.point (not shared) / this.points[i].point (shared)**:\n * The point object. The point name, if defined, is available through\n * `this.point.name`.\n *\n * - **this.points**:\n * In a shared tooltip, this is an array containing all other\n * properties for each point.\n *\n * - **this.series (not shared) / this.points[i].series (shared)**:\n * The series object. The series name is available through\n * `this.series.name`.\n *\n * - **this.total (not shared) / this.points[i].total (shared)**:\n * Stacked series only. The total value at this point's x value.\n *\n * - **this.x**:\n * The x value. This property is the same regardless of the tooltip\n * being shared or not.\n *\n * - **this.y (not shared) / this.points[i].y (shared)**:\n * The y value.\n *\n * @sample {highcharts} highcharts/tooltip/formatter-simple/\n * Simple string formatting\n * @sample {highcharts} highcharts/tooltip/formatter-shared/\n * Formatting with shared tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Formatting with split tooltip\n * @sample highcharts/tooltip/formatter-conditional-default/\n * Extending default formatter\n * @sample {highstock} stock/tooltip/formatter/\n * Formatting with shared tooltip\n * @sample {highmaps} maps/tooltip/formatter/\n * String formatting\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.formatter\n */\n /**\n * Callback function to format the text of the tooltip for\n * visible null points.\n * Works analogously to [formatter](#tooltip.formatter).\n *\n * @sample highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.nullFormatter\n */\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (`false`), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area. For small charts, this may result in clipping\n * or overlapping. When `true`, a separate SVG element is created and\n * overlaid on the page, allowing the tooltip to be aligned inside the\n * page itself.\n *\n * Defaults to `true` if `chart.scrollablePlotArea` is activated,\n * otherwise `false`.\n *\n * @sample highcharts/tooltip/outside\n * Small charts with tooltips outside\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 6.1.1\n * @apioption tooltip.outside\n */\n /**\n * A callback function for formatting the HTML output for a single point\n * in the tooltip. Like the `pointFormat` string, but with more\n * flexibility.\n *\n * @type {Highcharts.FormatterCallbackFunction}\n * @since 4.1.0\n * @context Highcharts.Point\n * @apioption tooltip.pointFormatter\n */\n /**\n * A callback function to place the tooltip in a custom position. The\n * callback receives three parameters: `labelWidth`, `labelHeight` and\n * `point`, where point contains values for `plotX` and `plotY` telling\n * where the reference point is in the plot area. Add `chart.plotLeft`\n * and `chart.plotTop` to get the full coordinates.\n *\n * To find the actual hovered `Point` instance, use\n * `this.chart.hoverPoint`. For shared or split tooltips, all the hover\n * points are available in `this.chart.hoverPoints`.\n *\n * Since v7, when [tooltip.split](#tooltip.split) option is enabled,\n * positioner is called for each of the boxes separately, including\n * xAxis header. xAxis header is not a point, instead `point` argument\n * contains info: `{ plotX: Number, plotY: Number, isHeader: Boolean }`\n *\n * The return should be an object containing x and y values, for example\n * `{ x: 100, y: 100 }`.\n *\n * @sample {highcharts} highcharts/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/positioner/\n * A fixed tooltip position on top of the chart\n * @sample {highmaps} maps/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/split-positioner/\n * Split tooltip with fixed positions\n * @sample {highstock} stock/tooltip/positioner-scrollable-plotarea/\n * Scrollable plot area combined with tooltip positioner\n *\n * @type {Highcharts.TooltipPositionerCallbackFunction}\n * @since 2.2.4\n * @apioption tooltip.positioner\n */\n /**\n * Split the tooltip into one label per series, with the header close\n * to the axis. This is recommended over [shared](#tooltip.shared)\n * tooltips for charts with multiple line series, generally making them\n * easier to read. This option takes precedence over `tooltip.shared`.\n *\n * @productdesc {highstock} In Highcharts Stock, tooltips are split\n * by default since v6.0.0. Stock charts typically contain\n * multi-dimension points and multiple panes, making split tooltips\n * the preferred layout over\n * the previous `shared` tooltip.\n *\n * @sample highcharts/tooltip/split/\n * Split tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Split tooltip and custom formatter callback\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} true\n * @since 5.0.0\n * @product highcharts highstock\n * @apioption tooltip.split\n */\n /**\n * Prevents the tooltip from switching or closing, when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @type {boolean}\n * @since 8.0.1\n * @apioption tooltip.stickOnContact\n */\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption tooltip.useHTML\n */\n /**\n * How many decimals to show in each series' y value. This is\n * overridable in each series' tooltip options object. The default is to\n * preserve all decimals.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {number|undefined}\n * @since 2.2\n * @apioption tooltip.valueDecimals\n */\n /**\n * A string to prepend to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valuePrefix\n */\n /**\n * A string to append to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valueSuffix\n */\n /**\n * The format for the date in the tooltip header if the X axis is a\n * datetime axis. The default is a best guess based on the smallest\n * distance between points in the chart.\n *\n * @sample {highcharts} highcharts/tooltip/xdateformat/\n * A different format\n *\n * @type {string}\n * @product highcharts highstock gantt\n * @apioption tooltip.xDateFormat\n */\n /**\n * How many decimals to show for the `point.change`\n * or the `point.cumulativeSum` value when the `series.compare`\n * or the `series.cumulative` option is set.\n * This is overridable in each series' tooltip options object.\n *\n * @type {number}\n * @default 2\n * @since 1.0.1\n * @product highstock\n * @apioption tooltip.changeDecimals\n */\n /**\n * Enable or disable the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/enabled/\n * Disabled\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Disable tooltip and show values on chart instead\n */\n enabled: true,\n /**\n * Enable or disable animation of the tooltip.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n */\n animation: svg,\n /**\n * The radius of the rounded border corners.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 5px by default\n * @sample {highcharts} highcharts/tooltip/borderradius-0/\n * Square borders\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n */\n borderRadius: 3,\n /**\n * For series on datetime axes, the date format in the tooltip's\n * header will by default be guessed based on the closest data points.\n * This member gives the default string representations used for\n * each unit. For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * @see [xAxis.dateTimeLabelFormats](#xAxis.dateTimeLabelFormats)\n *\n * @type {Highcharts.Dictionary}\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /** @internal */\n millisecond: '%A, %b %e, %H:%M:%S.%L',\n /** @internal */\n second: '%A, %b %e, %H:%M:%S',\n /** @internal */\n minute: '%A, %b %e, %H:%M',\n /** @internal */\n hour: '%A, %b %e, %H:%M',\n /** @internal */\n day: '%A, %b %e, %Y',\n /** @internal */\n week: 'Week from %A, %b %e, %Y',\n /** @internal */\n month: '%B %Y',\n /** @internal */\n year: '%Y'\n },\n /**\n * A string to append to the tooltip format.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @since 2.2\n */\n footerFormat: '',\n /**\n * The name of a symbol to use for the border around the tooltip\n * header. Applies only when [tooltip.split](#tooltip.split) is\n * enabled.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @see [tooltip.shape](#tooltip.shape)\n *\n * @sample {highstock} stock/tooltip/split-positioner/\n * Different shapes for header and split boxes\n *\n * @type {Highcharts.TooltipShapeValue}\n * @validvalue [\"callout\", \"square\"]\n * @since 7.0\n */\n headerShape: 'callout',\n /**\n * The number of milliseconds to wait until the tooltip is hidden when\n * mouse out from a point or chart.\n *\n * @since 3.0\n */\n hideDelay: 500,\n /**\n * Padding inside the tooltip, in pixels.\n *\n * @since 5.0.0\n */\n padding: 8,\n /**\n * The name of a symbol to use for the border around the tooltip. Can\n * be one of: `\"callout\"`, `\"circle\"` or `\"rect\"`. When\n * [tooltip.split](#tooltip.split)\n * option is enabled, shape is applied to all boxes except header, which\n * is controlled by\n * [tooltip.headerShape](#tooltip.headerShape).\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @type {Highcharts.TooltipShapeValue}\n * @since 4.0\n */\n shape: 'callout',\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events. Tooltip texts for series types with ordered\n * data (not pie, scatter, flags etc) will be shown in a single bubble.\n * This is recommended for single series charts and for tablet/mobile\n * optimized charts.\n *\n * See also [tooltip.split](#tooltip.split), that is better suited for\n * charts with many series, especially line-type series. The\n * `tooltip.split` option takes precedence over `tooltip.shared`.\n *\n * @sample {highcharts} highcharts/tooltip/shared-false/\n * False by default\n * @sample {highcharts} highcharts/tooltip/shared-true/\n * True\n * @sample {highcharts} highcharts/tooltip/shared-x-crosshair/\n * True with x axis crosshair\n * @sample {highcharts} highcharts/tooltip/shared-true-mixed-types/\n * True with mixed series types\n *\n * @since 2.1\n * @product highcharts highstock\n */\n shared: false,\n /**\n * Proximity snap for graphs or single points. It defaults to 10 for\n * mouse-powered devices and 25 for touch devices.\n *\n * Note that in most cases the whole plot area captures the mouse\n * movement, and in these cases `tooltip.snap` doesn't make sense. This\n * applies when [stickyTracking](#plotOptions.series.stickyTracking)\n * is `true` (default) and when the tooltip is [shared](#tooltip.shared)\n * or [split](#tooltip.split).\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 10 px by default\n * @sample {highcharts} highcharts/tooltip/snap-50/\n * 50 px on graph\n *\n * @type {number}\n * @default 10/25\n * @since 1.2.0\n * @product highcharts highstock\n */\n snap: isTouchDevice ? 25 : 10,\n /**\n * The HTML of the tooltip header line. Variables are enclosed by\n * curly brackets. Available variables are `point.key`, `series.name`,\n * `series.color` and other members from the `point` and `series`\n * objects. The `point.key` variable contains the category name, x\n * value or datetime string depending on the type of axis. For datetime\n * axes, the `point.key` date format can be set using\n * `tooltip.xDateFormat`.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highstock} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @apioption tooltip.headerFormat\n */\n headerFormat: '{point.key}
',\n /**\n * The HTML of the null point's line in the tooltip. Works analogously\n * to [pointFormat](#tooltip.pointFormat).\n *\n * @sample {highcharts} highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {string}\n * @apioption tooltip.nullFormat\n */\n /**\n * The HTML of the point's line in the tooltip. Variables are enclosed\n * by curly brackets. Available variables are `point.x`, `point.y`,\n * `series.name` and `series.color` and other properties on the same\n * form. Furthermore, `point.y` can be extended by the\n * `tooltip.valuePrefix` and `tooltip.valueSuffix` variables. This can\n * also be overridden for each series, which makes it a good hook for\n * displaying units.\n *\n * In styled mode, the dot is colored by a class name rather\n * than the point color.\n *\n * @sample {highcharts} highcharts/tooltip/pointformat/\n * A different point format with value suffix\n * @sample {highcharts|highstock} highcharts/tooltip/pointformat-extra-information/\n * Show extra information about points in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.pointFormat\n */\n pointFormat: '\\u25CF {series.name}: {point.y}
',\n /**\n * The background color or gradient for the tooltip.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-solid/\n * Yellowish background\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-gradient/\n * Gradient\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: color(\"#f7f7f7\" /* Palette.neutralColor3 */)\n // @todo: Disallow undefined as input for colors\n .setOpacity(0.85).get(),\n /**\n * The pixel width of the tooltip border.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 2px by default\n * @sample {highcharts} highcharts/tooltip/borderwidth/\n * No border (shadow only)\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n */\n borderWidth: 1,\n /**\n * Whether to apply a drop shadow to the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * True by default\n * @sample {highcharts} highcharts/tooltip/shadow/\n * False\n * @sample {highmaps} maps/tooltip/positioner/\n * Fixed tooltip position, border and shadow disabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n */\n shadow: true,\n /**\n * Prevents the tooltip from switching or closing when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @since 8.0.1\n */\n stickOnContact: false,\n /**\n * CSS styles for the tooltip. The tooltip can also be styled through\n * the CSS class `.highcharts-tooltip`.\n *\n * Note that the default `pointerEvents` style makes the tooltip ignore\n * mouse events, so in order to use clickable tooltips, this value must\n * be set to `auto`.\n *\n * @sample {highcharts} highcharts/tooltip/style/\n * Greater padding, bold text\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '12px',\n /** @internal */\n whiteSpace: 'nowrap'\n },\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @since 2.2\n */\n useHTML: false\n },\n /**\n * Highchart by default puts a credits label in the lower right corner\n * of the chart. This can be changed using these options.\n */\n credits: {\n /**\n * Credits for map source to be concatenated with conventional credit\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapTextFull](#credits.mapTextFull)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default \\u00a9 {geojson.copyrightShort}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapText\n */\n /**\n * Detailed credits for map source to be displayed on hover of credits\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapText](#credits.mapText)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default {geojson.copyright}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapTextFull\n */\n /**\n * Whether to show the credits text.\n *\n * @sample {highcharts} highcharts/credits/enabled-false/\n * Credits disabled\n * @sample {highstock} stock/credits/enabled/\n * Credits disabled\n * @sample {highmaps} maps/credits/enabled-false/\n * Credits disabled\n */\n enabled: true,\n /**\n * The URL for the credits label.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n href: 'https://www.highcharts.com?credits',\n /**\n * Position configuration for the credits label.\n *\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n *\n * @type {Highcharts.AlignObject}\n * @since 2.1\n */\n position: {\n /** @internal */\n align: 'right',\n /** @internal */\n x: -10,\n /** @internal */\n verticalAlign: 'bottom',\n /** @internal */\n y: -5\n },\n /**\n * CSS styles for the credits label.\n *\n * @see In styled mode, credits styles can be set with the\n * `.highcharts-credits` class.\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n cursor: 'pointer',\n /** @internal */\n color: \"#999999\" /* Palette.neutralColor40 */,\n /** @internal */\n fontSize: '9px'\n },\n /**\n * The text for the credits label.\n *\n * @productdesc {highmaps}\n * If a map is loaded as GeoJSON, the text defaults to\n * `Highcharts @ {map-credits}`. Otherwise, it defaults to\n * `Highcharts.com`.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n text: 'Highcharts.com'\n }\n };\n /* eslint-disable spaced-comment */\n\n defaultOptions.chart.styledMode = false;\n\n '';\n var defaultTime = new Time(merge(defaultOptions.global,\n defaultOptions.time));\n /**\n * Get the updated default options. Until 3.0.7, merely exposing defaultOptions\n * for outside modules wasn't enough because the setOptions method created a new\n * object.\n *\n * @function Highcharts.getOptions\n *\n * @return {Highcharts.Options}\n * Default options.\n */\n function getOptions() {\n return defaultOptions;\n }\n /**\n * Merge the default options with custom options and return the new options\n * structure. Commonly used for defining reusable templates.\n *\n * @sample highcharts/global/useutc-false Setting a global option\n * @sample highcharts/members/setoptions Applying a global theme\n *\n * @function Highcharts.setOptions\n *\n * @param {Highcharts.Options} options\n * The new custom chart options.\n *\n * @return {Highcharts.Options}\n * Updated options.\n */\n function setOptions(options) {\n // Copy in the default options\n merge(true, defaultOptions, options);\n // Update the time object\n if (options.time || options.global) {\n if (H.time) {\n H.time.update(merge(defaultOptions.global, defaultOptions.time, options.global, options.time));\n }\n else {\n /**\n * Global `Time` object with default options. Since v6.0.5, time\n * settings can be applied individually for each chart. If no\n * individual settings apply, this `Time` object is shared by all\n * instances.\n *\n * @name Highcharts.time\n * @type {Highcharts.Time}\n */\n H.time = defaultTime;\n }\n }\n return defaultOptions;\n }\n /* *\n *\n * Default Export\n *\n * */\n var DefaultOptions = {\n defaultOptions: defaultOptions,\n defaultTime: defaultTime,\n getOptions: getOptions,\n setOptions: setOptions\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"plotBox\"|\"spacingBox\"} Highcharts.ButtonRelativeToValue\n */\n /**\n * Gets fired when a series is added to the chart after load time, using the\n * `addSeries` method. Returning `false` prevents the series from being added.\n *\n * @callback Highcharts.ChartAddSeriesCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.ChartAddSeriesEventObject} event\n * The event that occured.\n */\n /**\n * Contains common event information. Through the `options` property you can\n * access the series options that were passed to the `addSeries` method.\n *\n * @interface Highcharts.ChartAddSeriesEventObject\n */ /**\n * The series options that were passed to the `addSeries` method.\n * @name Highcharts.ChartAddSeriesEventObject#options\n * @type {Highcharts.SeriesOptionsType}\n */ /**\n * Prevents the default behaviour of the event.\n * @name Highcharts.ChartAddSeriesEventObject#preventDefault\n * @type {Function}\n */ /**\n * The event target.\n * @name Highcharts.ChartAddSeriesEventObject#target\n * @type {Highcharts.Chart}\n */ /**\n * The event type.\n * @name Highcharts.ChartAddSeriesEventObject#type\n * @type {\"addSeries\"}\n */\n /**\n * Gets fired when clicking on the plot background.\n *\n * @callback Highcharts.ChartClickCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.PointerEventObject} event\n * The event that occured.\n */\n /**\n * Contains an axes of the clicked spot.\n *\n * @interface Highcharts.ChartClickEventAxisObject\n */ /**\n * Axis at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#value\n * @type {number}\n */\n /**\n * Contains information about the clicked spot on the chart. Remember the unit\n * of a datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.ChartClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Information about the x-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#xAxis\n * @type {Array}\n */ /**\n * Information about the y-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#yAxis\n * @type {Array}\n */ /**\n * Information about the z-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#zAxis\n * @type {Array|undefined}\n */\n /**\n * Gets fired when the chart is finished loading.\n *\n * @callback Highcharts.ChartLoadCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Fires when the chart is redrawn, either after a call to `chart.redraw()` or\n * after an axis, series or point is modified with the `redraw` option set to\n * `true`.\n *\n * @callback Highcharts.ChartRedrawCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired after initial load of the chart (directly after the `load` event),\n * and after each redraw (directly after the `redraw` event).\n *\n * @callback Highcharts.ChartRenderCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired when an area of the chart has been selected. The default action\n * for the selection event is to zoom the chart to the selected area. It can be\n * prevented by calling `event.preventDefault()` or return false.\n *\n * @callback Highcharts.ChartSelectionCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.SelectEventObject} event\n * Event informations\n *\n * @return {boolean|undefined}\n * Return false to prevent the default action, usually zoom.\n */\n (''); // detach doclets above\n\n return DefaultOptions;\n });\n _registerModule(_modules, 'Core/Animation/Fx.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var win = H.win;\n var isNumber = U.isNumber,\n objectEach = U.objectEach;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * An animator object used internally. One instance applies to one property\n * (attribute or style prop) on one element. Animation is always initiated\n * through {@link SVGElement#animate}.\n *\n * @example\n * let rect = renderer.rect(0, 0, 10, 10).add();\n * rect.animate({ width: 100 });\n *\n * @private\n * @class\n * @name Highcharts.Fx\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} elem\n * The element to animate.\n *\n * @param {Partial} options\n * Animation options.\n *\n * @param {string} prop\n * The single attribute or CSS property to animate.\n */\n var Fx = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Fx(elem, options, prop) {\n this.pos = NaN;\n this.options = options;\n this.elem = elem;\n this.prop = prop;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the current step of a path definition on SVGElement.\n *\n * @function Highcharts.Fx#dSetter\n *\n */\n Fx.prototype.dSetter = function () {\n var paths = this.paths,\n start = paths && paths[0],\n end = paths && paths[1],\n now = this.now || 0;\n var path = [];\n // Land on the final path without adjustment points appended in the ends\n if (now === 1 || !start || !end) {\n path = this.toD || [];\n }\n else if (start.length === end.length && now < 1) {\n for (var i = 0; i < end.length; i++) {\n // Tween between the start segment and the end segment. Start\n // with a copy of the end segment and tween the appropriate\n // numerics\n var startSeg = start[i];\n var endSeg = end[i];\n var tweenSeg = [];\n for (var j = 0; j < endSeg.length; j++) {\n var startItem = startSeg[j];\n var endItem = endSeg[j];\n // Tween numbers\n if (isNumber(startItem) &&\n isNumber(endItem) &&\n // Arc boolean flags\n !(endSeg[0] === 'A' && (j === 4 || j === 5))) {\n tweenSeg[j] = startItem + now * (endItem - startItem);\n // Strings, take directly from the end segment\n }\n else {\n tweenSeg[j] = endItem;\n }\n }\n path.push(tweenSeg);\n }\n // If animation is finished or length not matching, land on right value\n }\n else {\n path = end;\n }\n this.elem.attr('d', path, void 0, true);\n };\n /**\n * Update the element with the current animation step.\n *\n * @function Highcharts.Fx#update\n *\n */\n Fx.prototype.update = function () {\n var elem = this.elem,\n prop = this.prop, // if destroyed, it is null\n now = this.now,\n step = this.options.step;\n // Animation setter defined from outside\n if (this[prop + 'Setter']) {\n this[prop + 'Setter']();\n // Other animations on SVGElement\n }\n else if (elem.attr) {\n if (elem.element) {\n elem.attr(prop, now, null, true);\n }\n // HTML styles, raw HTML content like container size\n }\n else {\n elem.style[prop] = now + this.unit;\n }\n if (step) {\n step.call(elem, now, this);\n }\n };\n /**\n * Run an animation.\n *\n * @function Highcharts.Fx#run\n *\n * @param {number} from\n * The current value, value to start from.\n *\n * @param {number} to\n * The end value, value to land on.\n *\n * @param {string} unit\n * The property unit, for example `px`.\n *\n */\n Fx.prototype.run = function (from, to, unit) {\n var self = this,\n options = self.options,\n timer = function (gotoEnd) {\n return timer.stopped ? false : self.step(gotoEnd);\n }, requestAnimationFrame = win.requestAnimationFrame ||\n function (step) {\n setTimeout(step, 13);\n }, step = function () {\n for (var i = 0; i < Fx.timers.length; i++) {\n if (!Fx.timers[i]()) {\n Fx.timers.splice(i--, 1);\n }\n }\n if (Fx.timers.length) {\n requestAnimationFrame(step);\n }\n };\n if (from === to && !this.elem['forceAnimate:' + this.prop]) {\n delete options.curAnim[this.prop];\n if (options.complete &&\n Object.keys(options.curAnim).length === 0) {\n options.complete.call(this.elem);\n }\n }\n else { // #7166\n this.startTime = +new Date();\n this.start = from;\n this.end = to;\n this.unit = unit;\n this.now = this.start;\n this.pos = 0;\n timer.elem = this.elem;\n timer.prop = this.prop;\n if (timer() && Fx.timers.push(timer) === 1) {\n requestAnimationFrame(step);\n }\n }\n };\n /**\n * Run a single step in the animation.\n *\n * @function Highcharts.Fx#step\n *\n * @param {boolean} [gotoEnd]\n * Whether to go to the endpoint of the animation after abort.\n *\n * @return {boolean}\n * Returns `true` if animation continues.\n */\n Fx.prototype.step = function (gotoEnd) {\n var t = +new Date(),\n options = this.options,\n elem = this.elem,\n complete = options.complete,\n duration = options.duration,\n curAnim = options.curAnim;\n var ret,\n done;\n if ((elem.attr) && !elem.element) { // #2616, element is destroyed\n ret = false;\n }\n else if (gotoEnd || t >= duration + this.startTime) {\n this.now = this.end;\n this.pos = 1;\n this.update();\n curAnim[this.prop] = true;\n done = true;\n objectEach(curAnim, function (val) {\n if (val !== true) {\n done = false;\n }\n });\n if (done && complete) {\n complete.call(elem);\n }\n ret = false;\n }\n else {\n this.pos = options.easing((t - this.startTime) / duration);\n this.now = this.start + ((this.end -\n this.start) * this.pos);\n this.update();\n ret = true;\n }\n return ret;\n };\n /**\n * Prepare start and end values so that the path can be animated one to one.\n *\n * @function Highcharts.Fx#initPath\n *\n * @param {Highcharts.SVGElement} elem\n * The SVGElement item.\n *\n * @param {Highcharts.SVGPathArray|undefined} fromD\n * Starting path definition.\n *\n * @param {Highcharts.SVGPathArray} toD\n * Ending path definition.\n *\n * @return {Array}\n * An array containing start and end paths in array form so that\n * they can be animated in parallel.\n */\n Fx.prototype.initPath = function (elem, fromD, toD) {\n var startX = elem.startX,\n endX = elem.endX,\n end = toD.slice(), // copy\n isArea = elem.isArea,\n positionFactor = isArea ? 2 : 1;\n var shift,\n fullLength,\n i,\n reverse,\n start = fromD && fromD.slice(); // copy\n if (!start) {\n return [end,\n end];\n }\n /**\n * If shifting points, prepend a dummy point to the end path.\n * @private\n */\n function prepend(arr, other) {\n while (arr.length < fullLength) {\n // Move to, line to or curve to?\n var moveSegment = arr[0],\n otherSegment = other[fullLength - arr.length];\n if (otherSegment && moveSegment[0] === 'M') {\n if (otherSegment[0] === 'C') {\n arr[0] = [\n 'C',\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2]\n ];\n }\n else {\n arr[0] = ['L', moveSegment[1], moveSegment[2]];\n }\n }\n // Prepend a copy of the first point\n arr.unshift(moveSegment);\n // For areas, the bottom path goes back again to the left, so we\n // need to append a copy of the last point.\n if (isArea) {\n var z = arr.pop();\n arr.push(arr[arr.length - 1], z); // append point and the Z\n }\n }\n }\n /**\n * Copy and append last point until the length matches the end length.\n * @private\n */\n function append(arr, other) {\n while (arr.length < fullLength) {\n // Pull out the slice that is going to be appended or inserted.\n // In a line graph, the positionFactor is 1, and the last point\n // is sliced out. In an area graph, the positionFactor is 2,\n // causing the middle two points to be sliced out, since an area\n // path starts at left, follows the upper path then turns and\n // follows the bottom back.\n var segmentToAdd = arr[Math.floor(arr.length / positionFactor) - 1].slice();\n // Disable the first control point of curve segments\n if (segmentToAdd[0] === 'C') {\n segmentToAdd[1] = segmentToAdd[5];\n segmentToAdd[2] = segmentToAdd[6];\n }\n if (!isArea) {\n arr.push(segmentToAdd);\n }\n else {\n var lowerSegmentToAdd = arr[Math.floor(arr.length / positionFactor)].slice();\n arr.splice(arr.length / 2, 0, segmentToAdd, lowerSegmentToAdd);\n }\n }\n }\n // For sideways animation, find out how much we need to shift to get the\n // start path Xs to match the end path Xs.\n if (startX && endX && endX.length) {\n for (i = 0; i < startX.length; i++) {\n // Moving left, new points coming in on right\n if (startX[i] === endX[0]) {\n shift = i;\n break;\n // Moving right\n }\n else if (startX[0] ===\n endX[endX.length - startX.length + i]) {\n shift = i;\n reverse = true;\n break;\n // Fixed from the right side, \"scaling\" left\n }\n else if (startX[startX.length - 1] ===\n endX[endX.length - startX.length + i]) {\n shift = startX.length - i;\n break;\n }\n }\n if (typeof shift === 'undefined') {\n start = [];\n }\n }\n if (start.length && isNumber(shift)) {\n // The common target length for the start and end array, where both\n // arrays are padded in opposite ends\n fullLength = end.length + shift * positionFactor;\n if (!reverse) {\n prepend(end, start);\n append(start, end);\n }\n else {\n prepend(start, end);\n append(end, start);\n }\n }\n return [start, end];\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#fillSetter\n *\n */\n Fx.prototype.fillSetter = function () {\n Fx.prototype.strokeSetter.apply(this, arguments);\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#strokeSetter\n *\n */\n Fx.prototype.strokeSetter = function () {\n this.elem.attr(this.prop, color(this.start).tweenTo(color(this.end), this.pos), void 0, true);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Fx.timers = [];\n return Fx;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return Fx;\n });\n _registerModule(_modules, 'Core/Animation/AnimationUtilities.js', [_modules['Core/Animation/Fx.js'], _modules['Core/Utilities.js']], function (Fx, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the global animation to either a given value, or fall back to the given\n * chart's animation option.\n *\n * @function Highcharts.setAnimation\n *\n * @param {boolean|Partial|undefined} animation\n * The animation object.\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @todo\n * This function always relates to a chart, and sets a property on the renderer,\n * so it should be moved to the SVGRenderer.\n */\n function setAnimation(animation, chart) {\n chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);\n }\n /**\n * Get the animation in object form, where a disabled animation is always\n * returned as `{ duration: 0 }`.\n *\n * @function Highcharts.animObject\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} [animation=0]\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @return {Highcharts.AnimationOptionsObject}\n * An object with at least a duration property.\n */\n function animObject(animation) {\n return isObject(animation) ?\n merge({ duration: 500, defer: 0 }, animation) :\n { duration: animation ? 500 : 0, defer: 0 };\n }\n /**\n * Get the defer as a number value from series animation options.\n *\n * @function Highcharts.getDeferredAnimation\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} animation\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @param {Highcharts.Series} [series]\n * Series to defer animation.\n *\n * @return {number}\n * The numeric value.\n */\n function getDeferredAnimation(chart, animation, series) {\n var labelAnimation = animObject(animation),\n s = series ? [series] : chart.series;\n var defer = 0,\n duration = 0;\n s.forEach(function (series) {\n var seriesAnim = animObject(series.options.animation);\n defer = animation && defined(animation.defer) ?\n labelAnimation.defer :\n Math.max(defer, seriesAnim.duration + seriesAnim.defer);\n duration = Math.min(labelAnimation.duration, seriesAnim.duration);\n });\n // Disable defer for exporting\n if (chart.renderer.forExport) {\n defer = 0;\n }\n var anim = {\n defer: Math.max(0,\n defer - duration),\n duration: Math.min(defer,\n duration)\n };\n return anim;\n }\n /**\n * The global animate method, which uses Fx to create individual animators.\n *\n * @function Highcharts.animate\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el\n * The element to animate.\n *\n * @param {Highcharts.CSSObject|Highcharts.SVGAttributes} params\n * An object containing key-value pairs of the properties to animate.\n * Supports numeric as pixel-based CSS properties for HTML objects and\n * attributes for SVGElements.\n *\n * @param {Partial} [opt]\n * Animation options.\n *\n * @return {void}\n */\n function animate(el, params, opt) {\n var start,\n unit = '',\n end,\n fx,\n args;\n if (!isObject(opt)) { // Number or undefined/null\n args = arguments;\n opt = {\n duration: args[2],\n easing: args[3],\n complete: args[4]\n };\n }\n if (!isNumber(opt.duration)) {\n opt.duration = 400;\n }\n opt.easing = typeof opt.easing === 'function' ?\n opt.easing :\n (Math[opt.easing] || Math.easeInOutSine);\n opt.curAnim = merge(params);\n objectEach(params, function (val, prop) {\n // Stop current running animation of this property\n stop(el, prop);\n fx = new Fx(el, opt, prop);\n end = void 0;\n if (prop === 'd' && isArray(params.d)) {\n fx.paths = fx.initPath(el, el.pathArray, params.d);\n fx.toD = params.d;\n start = 0;\n end = 1;\n }\n else if (el.attr) {\n start = el.attr(prop);\n }\n else {\n start = parseFloat(getStyle(el, prop)) || 0;\n if (prop !== 'opacity') {\n unit = 'px';\n }\n }\n if (!end) {\n end = val;\n }\n if (typeof end === 'string' && end.match('px')) {\n end = end.replace(/px/g, ''); // #4351\n }\n fx.run(start, end, unit);\n });\n }\n /**\n * Stop running animation.\n *\n * @function Highcharts.stop\n *\n * @param {Highcharts.SVGElement} el\n * The SVGElement to stop animation on.\n *\n * @param {string} [prop]\n * The property to stop animating. If given, the stop method will stop a\n * single property from animating, while others continue.\n *\n * @return {void}\n *\n * @todo\n * A possible extension to this would be to stop a single property, when\n * we want to continue animating others. Then assign the prop to the timer\n * in the Fx.run method, and check for the prop here. This would be an\n * improvement in all cases where we stop the animation from .attr. Instead of\n * stopping everything, we can just stop the actual attributes we're setting.\n */\n function stop(el, prop) {\n var i = Fx.timers.length;\n // Remove timers related to this element (#4519)\n while (i--) {\n if (Fx.timers[i].elem === el && (!prop || prop === Fx.timers[i].prop)) {\n Fx.timers[i].stopped = true; // #4667\n }\n }\n }\n var animationExports = {\n animate: animate,\n animObject: animObject,\n getDeferredAnimation: getDeferredAnimation,\n setAnimation: setAnimation,\n stop: stop\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return animationExports;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/AST.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n error = U.error,\n isFunction = U.isFunction,\n isString = U.isString,\n objectEach = U.objectEach,\n splat = U.splat;\n var trustedTypes = win.trustedTypes;\n /* *\n *\n * Constants\n *\n * */\n // Create the trusted type policy. This should not be exposed.\n var trustedTypesPolicy = (trustedTypes &&\n isFunction(trustedTypes.createPolicy) &&\n trustedTypes.createPolicy('highcharts', {\n createHTML: function (s) { return s; }\n }));\n var emptyHTML = trustedTypesPolicy ?\n trustedTypesPolicy.createHTML('') :\n '';\n // In IE8, DOMParser is undefined. IE9 and PhantomJS are only able to parse XML.\n var hasValidDOMParser = (function () {\n try {\n return Boolean(new DOMParser().parseFromString(emptyHTML, 'text/html'));\n }\n catch (e) {\n return false;\n }\n }());\n /* *\n *\n * Class\n *\n * */\n /**\n * The AST class represents an abstract syntax tree of HTML or SVG content. It\n * can take HTML as an argument, parse it, optionally transform it to SVG, then\n * perform sanitation before inserting it into the DOM.\n *\n * @class\n * @name Highcharts.AST\n *\n * @param {string|Array} source\n * Either an HTML string or an ASTNode list to populate the tree.\n */\n var AST = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n // Construct an AST from HTML markup, or wrap an array of existing AST nodes\n function AST(source) {\n this.nodes = typeof source === 'string' ?\n this.parseMarkup(source) : source;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Filter an object of SVG or HTML attributes against the allow list.\n *\n * @static\n *\n * @function Highcharts.AST#filterUserAttributes\n *\n * @param {Highcharts.SVGAttributes} attributes The attributes to filter\n *\n * @return {Highcharts.SVGAttributes}\n * The filtered attributes\n */\n AST.filterUserAttributes = function (attributes) {\n objectEach(attributes, function (val, key) {\n var valid = true;\n if (AST.allowedAttributes.indexOf(key) === -1) {\n valid = false;\n }\n if (['background', 'dynsrc', 'href', 'lowsrc', 'src']\n .indexOf(key) !== -1) {\n valid = isString(val) && AST.allowedReferences.some(function (ref) { return val.indexOf(ref) === 0; });\n }\n if (!valid) {\n error(33, false, void 0, {\n 'Invalid attribute in config': \"\".concat(key)\n });\n delete attributes[key];\n }\n // #17753, < is not allowed in SVG attributes\n if (isString(val) && attributes[key]) {\n attributes[key] = val.replace(/} The parsed nodes.\n */\n AST.prototype.parseMarkup = function (markup) {\n var nodes = [];\n markup = markup\n .trim()\n // The style attribute throws a warning when parsing when CSP is\n // enabled (#6884), so use an alias and pick it up below\n // Make all quotation marks parse correctly to DOM (#17627)\n .replace(/ style=([\"'])/g, ' data-style=$1');\n var doc;\n if (hasValidDOMParser) {\n doc = new DOMParser().parseFromString(trustedTypesPolicy ?\n trustedTypesPolicy.createHTML(markup) :\n markup, 'text/html');\n }\n else {\n var body = createElement('div');\n body.innerHTML = markup;\n doc = { body: body };\n }\n var appendChildNodes = function (node,\n addTo) {\n var tagName = node.nodeName.toLowerCase();\n // Add allowed tags\n var astNode = {\n tagName: tagName\n };\n if (tagName === '#text') {\n astNode.textContent = node.textContent || '';\n }\n var parsedAttributes = node.attributes;\n // Add attributes\n if (parsedAttributes) {\n var attributes_2 = {};\n [].forEach.call(parsedAttributes, function (attrib) {\n if (attrib.name === 'data-style') {\n astNode.style = AST.parseStyle(attrib.value);\n }\n else {\n attributes_2[attrib.name] = attrib.value;\n }\n });\n astNode.attributes = attributes_2;\n }\n // Handle children\n if (node.childNodes.length) {\n var children_1 = [];\n [].forEach.call(node.childNodes, function (childNode) {\n appendChildNodes(childNode, children_1);\n });\n if (children_1.length) {\n astNode.children = children_1;\n }\n }\n addTo.push(astNode);\n };\n [].forEach.call(doc.body.childNodes, function (childNode) { return appendChildNodes(childNode, nodes); });\n return nodes;\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * The list of allowed SVG or HTML attributes, used for sanitizing\n * potentially harmful content from the chart configuration before adding to\n * the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedAttributes)\n *\n * @example\n * // Allow a custom, trusted attribute\n * Highcharts.AST.allowedAttributes.push('data-value');\n *\n * @name Highcharts.AST.allowedAttributes\n * @type {Array}\n */\n AST.allowedAttributes = [\n 'aria-controls',\n 'aria-describedby',\n 'aria-expanded',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'aria-live',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-roledescription',\n 'aria-selected',\n 'class',\n 'clip-path',\n 'color',\n 'colspan',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'disabled',\n 'fill',\n 'height',\n 'href',\n 'id',\n 'in',\n 'markerHeight',\n 'markerWidth',\n 'offset',\n 'opacity',\n 'orient',\n 'padding',\n 'paddingLeft',\n 'paddingRight',\n 'patternUnits',\n 'r',\n 'refX',\n 'refY',\n 'role',\n 'scope',\n 'slope',\n 'src',\n 'startOffset',\n 'stdDeviation',\n 'stroke',\n 'stroke-linecap',\n 'stroke-width',\n 'style',\n 'tableValues',\n 'result',\n 'rowspan',\n 'summary',\n 'target',\n 'tabindex',\n 'text-align',\n 'text-anchor',\n 'textAnchor',\n 'textLength',\n 'title',\n 'type',\n 'valign',\n 'width',\n 'x',\n 'x1',\n 'x2',\n 'xlink:href',\n 'y',\n 'y1',\n 'y2',\n 'zIndex'\n ];\n /**\n * The list of allowed references for referring attributes like `href` and\n * `src`. Attribute values will only be allowed if they start with one of\n * these strings.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedReferences)\n *\n * @example\n * // Allow tel:\n * Highcharts.AST.allowedReferences.push('tel:');\n *\n * @name Highcharts.AST.allowedReferences\n * @type {Array}\n */\n AST.allowedReferences = [\n 'https://',\n 'http://',\n 'mailto:',\n '/',\n '../',\n './',\n '#'\n ];\n /**\n * The list of allowed SVG or HTML tags, used for sanitizing potentially\n * harmful content from the chart configuration before adding to the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedTags)\n *\n * @example\n * // Allow a custom, trusted tag\n * Highcharts.AST.allowedTags.push('blink'); // ;)\n *\n * @name Highcharts.AST.allowedTags\n * @type {Array}\n */\n AST.allowedTags = [\n 'a',\n 'abbr',\n 'b',\n 'br',\n 'button',\n 'caption',\n 'circle',\n 'clipPath',\n 'code',\n 'dd',\n 'defs',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'feComponentTransfer',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feOffset',\n 'feMerge',\n 'feMergeNode',\n 'filter',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n 'li',\n 'linearGradient',\n 'marker',\n 'ol',\n 'p',\n 'path',\n 'pattern',\n 'pre',\n 'rect',\n 'small',\n 'span',\n 'stop',\n 'strong',\n 'style',\n 'sub',\n 'sup',\n 'svg',\n 'table',\n 'text',\n 'textPath',\n 'thead',\n 'title',\n 'tbody',\n 'tspan',\n 'td',\n 'th',\n 'tr',\n 'u',\n 'ul',\n '#text'\n ];\n AST.emptyHTML = emptyHTML;\n /**\n * Allow all custom SVG and HTML attributes, references and tags (together\n * with potentially harmful ones) to be added to the DOM from the chart\n * configuration. In other words, disable the the allow-listing which is the\n * primary functionality of the AST.\n *\n * WARNING: Setting this property to `true` while allowing untrusted user\n * data in the chart configuration will expose your application to XSS\n * security risks!\n *\n * Note that in case you want to allow a known set of tags or attributes,\n * you should allow-list them instead of disabling the filtering totally.\n * See [allowedAttributes](Highcharts.AST#.allowedAttributes),\n * [allowedReferences](Highcharts.AST#.allowedReferences) and\n * [allowedTags](Highcharts.AST#.allowedTags). The `bypassHTMLFiltering`\n * setting is intended only for those cases where allow-listing is not\n * practical, and the chart configuration already comes from a secure\n * source.\n *\n * @example\n * // Allow all custom attributes, references and tags (disable DOM XSS\n * // filtering)\n * Highcharts.AST.bypassHTMLFiltering = true;\n *\n * @name Highcharts.AST.bypassHTMLFiltering\n * @static\n */\n AST.bypassHTMLFiltering = false;\n return AST;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Serialized form of an SVG/HTML definition, including children.\n *\n * @interface Highcharts.ASTNode\n */ /**\n * @name Highcharts.ASTNode#attributes\n * @type {Highcharts.SVGAttributes|undefined}\n */ /**\n * @name Highcharts.ASTNode#children\n * @type {Array|undefined}\n */ /**\n * @name Highcharts.ASTNode#tagName\n * @type {string|undefined}\n */ /**\n * @name Highcharts.ASTNode#textContent\n * @type {string|undefined}\n */\n (''); // keeps doclets above in file\n\n return AST;\n });\n _registerModule(_modules, 'Core/FormatUtilities.js', [_modules['Core/Defaults.js'], _modules['Core/Utilities.js']], function (D, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var getNestedProperty = U.getNestedProperty,\n isNumber = U.isNumber,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970) into a\n * human readable date string. The format is a subset of the formats for PHP's\n * [strftime](https://www.php.net/manual/en/function.strftime.php) function.\n * Additional formats can be given in the {@link Highcharts.dateFormats} hook.\n *\n * Since v6.0.5, all internal dates are formatted through the\n * {@link Highcharts.Chart#time} instance to respect chart-level time settings.\n * The `Highcharts.dateFormat` function only reflects global time settings set\n * with `setOptions`.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @function Highcharts.dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are prefixed\n * with `%`.\n *\n * @param {number} timestamp\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n function dateFormat(format, timestamp, capitalize) {\n return defaultTime.dateFormat(format, timestamp, capitalize);\n }\n /**\n * Format a string according to a subset of the rules of Python's String.format\n * method.\n *\n * @example\n * let s = Highcharts.format(\n * 'The {color} fox was {len:.2f} feet long',\n * { color: 'red', len: Math.PI }\n * );\n * // => The red fox was 3.14 feet long\n *\n * @function Highcharts.format\n *\n * @param {string} str\n * The string to format.\n *\n * @param {Record} ctx\n * The context, a collection of key-value pairs where each key is\n * replaced by its value.\n *\n * @param {Highcharts.Chart} [chart]\n * A `Chart` instance used to get numberFormatter and time.\n *\n * @return {string}\n * The formatted string.\n */\n function format(str, ctx, chart) {\n var splitter = '{',\n isInside = false,\n segment,\n valueAndFormat,\n val,\n index;\n var floatRegex = /f$/;\n var decRegex = /\\.([0-9])/;\n var lang = defaultOptions.lang;\n var time = chart && chart.time || defaultTime;\n var numberFormatter = chart && chart.numberFormatter || numberFormat;\n var ret = [];\n while (str) {\n index = str.indexOf(splitter);\n if (index === -1) {\n break;\n }\n segment = str.slice(0, index);\n if (isInside) { // we're on the closing bracket looking back\n valueAndFormat = segment.split(':');\n val = getNestedProperty(valueAndFormat.shift() || '', ctx);\n // Format the replacement\n if (valueAndFormat.length && typeof val === 'number') {\n segment = valueAndFormat.join(':');\n if (floatRegex.test(segment)) { // float\n var decimals = parseInt((segment.match(decRegex) || ['', '-1'])[1], 10);\n if (val !== null) {\n val = numberFormatter(val, decimals, lang.decimalPoint, segment.indexOf(',') > -1 ? lang.thousandsSep : '');\n }\n }\n else {\n val = time.dateFormat(segment, val);\n }\n }\n // Push the result and advance the cursor\n ret.push(val);\n }\n else {\n ret.push(segment);\n }\n str = str.slice(index + 1); // the rest\n isInside = !isInside; // toggle\n splitter = isInside ? '}' : '{'; // now look for next matching bracket\n }\n ret.push(str);\n return ret.join('');\n }\n /**\n * Format a number and return a string based on input settings.\n *\n * @sample highcharts/members/highcharts-numberformat/\n * Custom number format\n *\n * @function Highcharts.numberFormat\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string}\n * The formatted number.\n */\n function numberFormat(number, decimals, decimalPoint, thousandsSep) {\n number = +number || 0;\n decimals = +decimals;\n var ret,\n fractionDigits;\n var lang = defaultOptions.lang, origDec = (number.toString().split('.')[1] || '').split('e')[0].length, exponent = number.toString().split('e'), firstDecimals = decimals;\n if (decimals === -1) {\n // Preserve decimals. Not huge numbers (#3793).\n decimals = Math.min(origDec, 20);\n }\n else if (!isNumber(decimals)) {\n decimals = 2;\n }\n else if (decimals && exponent[1] && exponent[1] < 0) {\n // Expose decimals from exponential notation (#7042)\n fractionDigits = decimals + +exponent[1];\n if (fractionDigits >= 0) {\n // remove too small part of the number while keeping the notation\n exponent[0] = (+exponent[0]).toExponential(fractionDigits)\n .split('e')[0];\n decimals = fractionDigits;\n }\n else {\n // fractionDigits < 0\n exponent[0] = exponent[0].split('.')[0] || 0;\n if (decimals < 20) {\n // use number instead of exponential notation (#7405)\n number = (exponent[0] * Math.pow(10, exponent[1]))\n .toFixed(decimals);\n }\n else {\n // or zero\n number = 0;\n }\n exponent[1] = 0;\n }\n }\n // Add another decimal to avoid rounding errors of float numbers. (#4573)\n // Then use toFixed to handle rounding.\n var roundedNumber = (Math.abs(exponent[1] ? exponent[0] : number) +\n Math.pow(10, -Math.max(decimals,\n origDec) - 1)).toFixed(decimals);\n // A string containing the positive integer component of the number\n var strinteger = String(pInt(roundedNumber));\n // Leftover after grouping into thousands. Can be 0, 1 or 2.\n var thousands = strinteger.length > 3 ? strinteger.length % 3 : 0;\n // Language\n decimalPoint = pick(decimalPoint, lang.decimalPoint);\n thousandsSep = pick(thousandsSep, lang.thousandsSep);\n // Start building the return\n ret = number < 0 ? '-' : '';\n // Add the leftover after grouping into thousands. For example, in the\n // number 42 000 000, this line adds 42.\n ret += thousands ? strinteger.substr(0, thousands) + thousandsSep : '';\n if (+exponent[1] < 0 && !firstDecimals) {\n ret = '0';\n }\n else {\n // Add the remaining thousands groups, joined by the thousands separator\n ret += strinteger\n .substr(thousands)\n .replace(/(\\d{3})(?=\\d)/g, '$1' + thousandsSep);\n }\n // Add the decimal point and the decimal component\n if (decimals) {\n // Get the decimal component\n ret += decimalPoint + roundedNumber.slice(-decimals);\n }\n if (exponent[1] && +ret !== 0) {\n ret += 'e' + exponent[1];\n }\n return ret;\n }\n /* *\n *\n * Default Export\n *\n * */\n var FormatUtilities = {\n dateFormat: dateFormat,\n format: format,\n numberFormat: numberFormat\n };\n\n return FormatUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/RendererUtilities.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Imports\n *\n * */\n var clamp = U.clamp,\n pick = U.pick,\n stableSort = U.stableSort;\n /* *\n *\n * Namespace\n *\n * */\n var RendererUtilities;\n (function (RendererUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * General distribution algorithm for distributing labels of differing size\n * along a confined length in two dimensions. The algorithm takes an array\n * of objects containing a size, a target and a rank. It will place the\n * labels as close as possible to their targets, skipping the lowest ranked\n * labels if necessary.\n * @private\n */\n function distribute(boxes, len, maxDistance) {\n // Original array will be altered with added .pos\n var origBoxes = boxes,\n reducedLen = origBoxes.reducedLen || len,\n sortByRank = function (a,\n b) {\n return (b.rank || 0) - (a.rank || 0);\n }, sortByTarget = function (a, b) {\n return a.target - b.target;\n };\n var i,\n overlapping = true,\n restBoxes = [], // The outranked overshoot\n box,\n target,\n total = 0;\n // If the total size exceeds the len, remove those boxes with the lowest\n // rank\n i = boxes.length;\n while (i--) {\n total += boxes[i].size;\n }\n // Sort by rank, then slice away overshoot\n if (total > reducedLen) {\n stableSort(boxes, sortByRank);\n i = 0;\n total = 0;\n while (total <= reducedLen) {\n total += boxes[i].size;\n i++;\n }\n restBoxes = boxes.splice(i - 1, boxes.length);\n }\n // Order by target\n stableSort(boxes, sortByTarget);\n // So far we have been mutating the original array. Now\n // create a copy with target arrays\n boxes = boxes.map(function (box) { return ({\n size: box.size,\n targets: [box.target],\n align: pick(box.align, 0.5)\n }); });\n while (overlapping) {\n // Initial positions: target centered in box\n i = boxes.length;\n while (i--) {\n box = boxes[i];\n // Composite box, average of targets\n target = (Math.min.apply(0, box.targets) +\n Math.max.apply(0, box.targets)) / 2;\n box.pos = clamp(target - box.size * box.align, 0, len - box.size);\n }\n // Detect overlap and join boxes\n i = boxes.length;\n overlapping = false;\n while (i--) {\n // Overlap\n if (i > 0 &&\n boxes[i - 1].pos + boxes[i - 1].size >\n boxes[i].pos) {\n // Add this size to the previous box\n boxes[i - 1].size += boxes[i].size;\n boxes[i - 1].targets = boxes[i - 1]\n .targets\n .concat(boxes[i].targets);\n boxes[i - 1].align = 0.5;\n // Overlapping right, push left\n if (boxes[i - 1].pos + boxes[i - 1].size > len) {\n boxes[i - 1].pos = len - boxes[i - 1].size;\n }\n boxes.splice(i, 1); // Remove this item\n overlapping = true;\n }\n }\n }\n // Add the rest (hidden boxes)\n origBoxes.push.apply(origBoxes, restBoxes);\n // Now the composite boxes are placed, we need to put the original boxes\n // within them\n i = 0;\n boxes.some(function (box) {\n var posInCompositeBox = 0;\n // Exceeded maxDistance => abort\n return (box.targets || []).some(function () {\n origBoxes[i].pos = box.pos + posInCompositeBox;\n // If the distance between the position and the target exceeds\n // maxDistance, abort the loop and decrease the length in\n // increments of 10% to recursively reduce the number of\n // visible boxes by rank. Once all boxes are within the\n // maxDistance, we're good.\n if (typeof maxDistance !== 'undefined' &&\n Math.abs(origBoxes[i].pos - origBoxes[i].target) > maxDistance) {\n // Reset the positions that are already set\n origBoxes\n .slice(0, i + 1)\n .forEach(function (box) { return delete box.pos; });\n // Try with a smaller length\n origBoxes.reducedLen =\n (origBoxes.reducedLen || len) - (len * 0.1);\n // Recurse\n if (origBoxes.reducedLen > len * 0.1) {\n distribute(origBoxes, len, maxDistance);\n }\n // Exceeded maxDistance => abort\n return true;\n }\n posInCompositeBox += origBoxes[i].size;\n i++;\n return false;\n });\n });\n // Add the rest (hidden) boxes and sort by target\n stableSort(origBoxes, sortByTarget);\n return origBoxes;\n }\n RendererUtilities.distribute = distribute;\n })(RendererUtilities || (RendererUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGElement.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (A, Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n stop = A.stop;\n var deg2rad = H.deg2rad,\n doc = H.doc,\n noop = H.noop,\n svg = H.svg,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n removeEvent = U.removeEvent,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The SVGElement prototype is a JavaScript wrapper for SVG elements used in the\n * rendering layer of Highcharts. Combined with the\n * {@link Highcharts.SVGRenderer}\n * object, these prototypes allow freeform annotation in the charts or even in\n * HTML pages without instanciating a chart. The SVGElement can also wrap HTML\n * labels, when `text` or `label` elements are created with the `useHTML`\n * parameter.\n *\n * The SVGElement instances are created through factory functions on the\n * {@link Highcharts.SVGRenderer}\n * object, like\n * {@link Highcharts.SVGRenderer#rect|rect},\n * {@link Highcharts.SVGRenderer#path|path},\n * {@link Highcharts.SVGRenderer#text|text},\n * {@link Highcharts.SVGRenderer#label|label},\n * {@link Highcharts.SVGRenderer#g|g}\n * and more.\n *\n * @class\n * @name Highcharts.SVGElement\n */\n var SVGElement = /** @class */ (function () {\n function SVGElement() {\n /* *\n *\n * Properties\n *\n * */\n this.element = void 0;\n this.onEvents = {};\n this.opacity = 1; // Default base for animation\n this.renderer = void 0;\n this.SVG_NS = SVG_NS;\n // Custom attributes used for symbols, these should be filtered out when\n // setting SVGElement attributes (#9375).\n this.symbolCustomAttribs = [\n 'x',\n 'y',\n 'width',\n 'height',\n 'r',\n 'start',\n 'end',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'rounded'\n ];\n }\n // @todo public zIndex?: number;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current value of an attribute or pseudo attribute,\n * used mainly for animation. Called internally from\n * the {@link Highcharts.SVGRenderer#attr} function.\n *\n * @private\n * @function Highcharts.SVGElement#_defaultGetter\n *\n * @param {string} key\n * Property key.\n *\n * @return {number|string}\n * Property value.\n */\n SVGElement.prototype._defaultGetter = function (key) {\n var ret = pick(this[key + 'Value'], // align getter\n this[key],\n this.element ? this.element.getAttribute(key) : null, 0);\n if (/^[\\-0-9\\.]+$/.test(ret)) { // is numerical\n ret = parseFloat(ret);\n }\n return ret;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#_defaultSetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype._defaultSetter = function (value, key, element) {\n element.setAttribute(key, value);\n };\n /**\n * Add the element to the DOM. All elements must be added this way.\n *\n * @sample highcharts/members/renderer-g\n * Elements added to a group\n *\n * @function Highcharts.SVGElement#add\n *\n * @param {Highcharts.SVGElement} [parent]\n * The parent item to add it to. If undefined, the element is added\n * to the {@link Highcharts.SVGRenderer.box}.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.add = function (parent) {\n var renderer = this.renderer,\n element = this.element;\n var inserted;\n if (parent) {\n this.parentGroup = parent;\n }\n // Build formatted text\n if (typeof this.textStr !== 'undefined' &&\n this.element.nodeName === 'text' // Not for SVGLabel instances\n ) {\n renderer.buildText(this);\n }\n // Mark as added\n this.added = true;\n // If we're adding to renderer root, or other elements in the group\n // have a z index, we need to handle it\n if (!parent || parent.handleZ || this.zIndex) {\n inserted = this.zIndexSetter();\n }\n // If zIndex is not handled, append at the end\n if (!inserted) {\n (parent ?\n parent.element :\n renderer.box).appendChild(element);\n }\n // fire an event for internal hooks\n if (this.onAdd) {\n this.onAdd();\n }\n return this;\n };\n /**\n * Add a class name to an element.\n *\n * @function Highcharts.SVGElement#addClass\n *\n * @param {string} className\n * The new class name to add.\n *\n * @param {boolean} [replace=false]\n * When true, the existing class name(s) will be overwritten with the new\n * one. When false, the new one is added.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chainability.\n */\n SVGElement.prototype.addClass = function (className, replace) {\n var currentClassName = replace ? '' : (this.attr('class') || '');\n // Trim the string and remove duplicates\n className = (className || '')\n .split(/ /g)\n .reduce(function (newClassName, name) {\n if (currentClassName.indexOf(name) === -1) {\n newClassName.push(name);\n }\n return newClassName;\n }, (currentClassName ?\n [currentClassName] :\n []))\n .join(' ');\n if (className !== currentClassName) {\n this.attr('class', className);\n }\n return this;\n };\n /**\n * This method is executed in the end of `attr()`, after setting all\n * attributes in the hash. In can be used to efficiently consolidate\n * multiple attributes in one SVG property -- e.g., translate, rotate and\n * scale are merged in one \"transform\" attribute in the SVG node.\n *\n * @private\n * @function Highcharts.SVGElement#afterSetters\n */\n SVGElement.prototype.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.updateTransform();\n this.doTransform = false;\n }\n };\n /**\n * Align the element relative to the chart or another box.\n *\n * @function Highcharts.SVGElement#align\n *\n * @param {Highcharts.AlignObject} [alignOptions]\n * The alignment options. The function can be called without this\n * parameter in order to re-align an element after the box has been\n * updated.\n *\n * @param {boolean} [alignByTranslate]\n * Align element by translation.\n *\n * @param {string|Highcharts.BBoxObject} [box]\n * The box to align to, needs a width and height. When the box is a\n * string, it refers to an object in the Renderer. For example, when\n * box is `spacingBox`, it refers to `Renderer.spacingBox` which\n * holds `width`, `height`, `x` and `y` properties.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n SVGElement.prototype.align = function (alignOptions, alignByTranslate, box) {\n var attribs = {},\n renderer = this.renderer,\n alignedObjects = renderer.alignedObjects;\n var x,\n y,\n alignTo,\n alignFactor,\n vAlignFactor;\n // First call on instanciate\n if (alignOptions) {\n this.alignOptions = alignOptions;\n this.alignByTranslate = alignByTranslate;\n if (!box || isString(box)) {\n this.alignTo = alignTo = box || 'renderer';\n // prevent duplicates, like legendGroup after resize\n erase(alignedObjects, this);\n alignedObjects.push(this);\n box = void 0; // reassign it below\n }\n // When called on resize, no arguments are supplied\n }\n else {\n alignOptions = this.alignOptions;\n alignByTranslate = this.alignByTranslate;\n alignTo = this.alignTo;\n }\n box = pick(box, renderer[alignTo], alignTo === 'scrollablePlotBox' ?\n renderer.plotBox : void 0, renderer);\n // Assign variables\n var align = alignOptions.align,\n vAlign = alignOptions.verticalAlign;\n // default: left align\n x = (box.x || 0) + (alignOptions.x || 0);\n // default: top align\n y = (box.y || 0) + (alignOptions.y || 0);\n // Align\n if (align === 'right') {\n alignFactor = 1;\n }\n else if (align === 'center') {\n alignFactor = 2;\n }\n if (alignFactor) {\n x += (box.width - (alignOptions.width || 0)) /\n alignFactor;\n }\n attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);\n // Vertical align\n if (vAlign === 'bottom') {\n vAlignFactor = 1;\n }\n else if (vAlign === 'middle') {\n vAlignFactor = 2;\n }\n if (vAlignFactor) {\n y += (box.height - (alignOptions.height || 0)) /\n vAlignFactor;\n }\n attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);\n // Animate only if already placed\n this[this.placed ? 'animate' : 'attr'](attribs);\n this.placed = true;\n this.alignAttr = attribs;\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#alignSetter\n * @param {\"left\"|\"center\"|\"right\"} value\n */\n SVGElement.prototype.alignSetter = function (value) {\n var convert = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n if (convert[value]) {\n this.alignValue = value;\n this.element.setAttribute('text-anchor', convert[value]);\n }\n };\n /**\n * Animate to given attributes or CSS properties.\n *\n * @sample highcharts/members/element-on/\n * Setting some attributes by animation\n *\n * @function Highcharts.SVGElement#animate\n *\n * @param {Highcharts.SVGAttributes} params\n * SVG attributes or CSS to animate.\n *\n * @param {boolean|Partial} [options]\n * Animation options.\n *\n * @param {Function} [complete]\n * Function to perform at the end of animation.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.animate = function (params, options, complete) {\n var _this = this;\n var animOptions = animObject(pick(options,\n this.renderer.globalAnimation,\n true)),\n deferTime = animOptions.defer;\n // When the page is hidden save resources in the background by not\n // running animation at all (#9749).\n if (pick(doc.hidden, doc.msHidden, doc.webkitHidden, false)) {\n animOptions.duration = 0;\n }\n if (animOptions.duration !== 0) {\n // allows using a callback with the global animation without\n // overwriting it\n if (complete) {\n animOptions.complete = complete;\n }\n // If defer option is defined delay the animation #12901\n syncTimeout(function () {\n if (_this.element) {\n animate(_this, params, animOptions);\n }\n }, deferTime);\n }\n else {\n this.attr(params, void 0, complete || animOptions.complete);\n // Call the end step synchronously\n objectEach(params, function (val, prop) {\n if (animOptions.step) {\n animOptions.step.call(this, val, { prop: prop, pos: 1, elem: this });\n }\n }, this);\n }\n return this;\n };\n /**\n * Apply a text outline through a custom CSS property, by copying the text\n * element and apply stroke to the copy. Used internally. Contrast checks at\n * [example](https://jsfiddle.net/highcharts/43soe9m1/2/).\n *\n * @example\n * // Specific color\n * text.css({\n * textOutline: '1px black'\n * });\n * // Automatic contrast\n * text.css({\n * color: '#000000', // black text\n * textOutline: '1px contrast' // => white outline\n * });\n *\n * @private\n * @function Highcharts.SVGElement#applyTextOutline\n *\n * @param {string} textOutline\n * A custom CSS `text-outline` setting, defined by `width color`.\n */\n SVGElement.prototype.applyTextOutline = function (textOutline) {\n var elem = this.element,\n hasContrast = textOutline.indexOf('contrast') !== -1,\n styles = {};\n // When the text shadow is set to contrast, use dark stroke for light\n // text and vice versa.\n if (hasContrast) {\n styles.textOutline = textOutline = textOutline.replace(/contrast/g, this.renderer.getContrast(elem.style.fill));\n }\n // Extract the stroke width and color\n var parts = textOutline.split(' ');\n var color = parts[parts.length - 1];\n var strokeWidth = parts[0];\n if (strokeWidth && strokeWidth !== 'none' && H.svg) {\n this.fakeTS = true; // Fake text shadow\n // Since the stroke is applied on center of the actual outline, we\n // need to double it to get the correct stroke-width outside the\n // glyphs.\n strokeWidth = strokeWidth.replace(/(^[\\d\\.]+)(.*?)$/g, function (match, digit, unit) {\n return (2 * Number(digit)) + unit;\n });\n // Remove shadows from previous runs.\n this.removeTextOutline();\n var outline_1 = doc.createElementNS(SVG_NS, 'tspan');\n attr(outline_1, {\n 'class': 'highcharts-text-outline',\n fill: color,\n stroke: color,\n 'stroke-width': strokeWidth,\n 'stroke-linejoin': 'round'\n });\n // For each of the tspans and text nodes, create a copy in the\n // outline.\n var parentElem = elem.querySelector('textPath') || elem;\n [].forEach.call(parentElem.childNodes, function (childNode) {\n var clone = childNode.cloneNode(true);\n if (clone.removeAttribute) {\n ['fill', 'stroke', 'stroke-width', 'stroke'].forEach(function (prop) { return clone\n .removeAttribute(prop); });\n }\n outline_1.appendChild(clone);\n });\n // Collect the sum of dy from all children, included nested ones\n var totalHeight_1 = 0;\n [].forEach.call(parentElem.querySelectorAll('text tspan'), function (element) {\n totalHeight_1 += Number(element.getAttribute('dy'));\n });\n // Insert an absolutely positioned break before the original text\n // to keep it in place\n var br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B';\n // Reset the position for the following text\n attr(br, {\n x: Number(elem.getAttribute('x')),\n dy: -totalHeight_1\n });\n // Insert the outline\n outline_1.appendChild(br);\n parentElem.insertBefore(outline_1, parentElem.firstChild);\n }\n };\n /**\n * @function Highcharts.SVGElement#attr\n * @param {string} key\n * @return {number|string}\n */ /**\n * Apply native and custom attributes to the SVG elements.\n *\n * In order to set the rotation center for rotation, set x and y to 0 and\n * use `translateX` and `translateY` attributes to position the element\n * instead.\n *\n * Attributes frequently used in Highcharts are `fill`, `stroke`,\n * `stroke-width`.\n *\n * @sample highcharts/members/renderer-rect/\n * Setting some attributes\n *\n * @example\n * // Set multiple attributes\n * element.attr({\n * stroke: 'red',\n * fill: 'blue',\n * x: 10,\n * y: 10\n * });\n *\n * // Set a single attribute\n * element.attr('stroke', 'red');\n *\n * // Get an attribute\n * element.attr('stroke'); // => 'red'\n *\n * @function Highcharts.SVGElement#attr\n *\n * @param {string|Highcharts.SVGAttributes} [hash]\n * The native and custom SVG attributes.\n *\n * @param {number|string|Highcharts.SVGPathArray} [val]\n * If the type of the first argument is `string`, the second can be a\n * value, which will serve as a single attribute setter. If the first\n * argument is a string and the second is undefined, the function\n * serves as a getter and the current value of the property is\n * returned.\n *\n * @param {Function} [complete]\n * A callback function to execute after setting the attributes. This\n * makes the function compliant and interchangeable with the\n * {@link SVGElement#animate} function.\n *\n * @param {boolean} [continueAnimation=true]\n * Used internally when `.attr` is called as part of an animation\n * step. Otherwise, calling `.attr` for an attribute will stop\n * animation for that attribute.\n *\n * @return {Highcharts.SVGElement}\n * If used as a setter, it returns the current\n * {@link Highcharts.SVGElement} so the calls can be chained. If\n * used as a getter, the current value of the attribute is returned.\n */\n SVGElement.prototype.attr = function (hash, val, complete, continueAnimation) {\n var element = this.element,\n symbolCustomAttribs = this.symbolCustomAttribs;\n var key,\n hasSetSymbolSize,\n ret = this,\n skipAttr,\n setter;\n // single key-value pair\n if (typeof hash === 'string' && typeof val !== 'undefined') {\n key = hash;\n hash = {};\n hash[key] = val;\n }\n // used as a getter: first argument is a string, second is undefined\n if (typeof hash === 'string') {\n ret = (this[hash + 'Getter'] ||\n this._defaultGetter).call(this, hash, element);\n // setter\n }\n else {\n objectEach(hash, function eachAttribute(val, key) {\n skipAttr = false;\n // Unless .attr is from the animator update, stop current\n // running animation of this property\n if (!continueAnimation) {\n stop(this, key);\n }\n // Special handling of symbol attributes\n if (this.symbolName &&\n symbolCustomAttribs.indexOf(key) !== -1) {\n if (!hasSetSymbolSize) {\n this.symbolAttr(hash);\n hasSetSymbolSize = true;\n }\n skipAttr = true;\n }\n if (this.rotation && (key === 'x' || key === 'y')) {\n this.doTransform = true;\n }\n if (!skipAttr) {\n setter = (this[key + 'Setter'] ||\n this._defaultSetter);\n setter.call(this, val, key, element);\n // Let the shadow follow the main element\n if (!this.styledMode &&\n this.shadows &&\n /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/\n .test(key)) {\n this.updateShadows(key, val, setter);\n }\n }\n }, this);\n this.afterSetters();\n }\n // In accordance with animate, run a complete callback\n if (complete) {\n complete.call(this);\n }\n return ret;\n };\n /**\n * Apply a clipping rectangle to this element.\n *\n * @function Highcharts.SVGElement#clip\n *\n * @param {Highcharts.ClipRectElement} [clipRect]\n * The clipping rectangle. If skipped, the current clip is removed.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVG element to allow chaining.\n */\n SVGElement.prototype.clip = function (clipRect) {\n return this.attr('clip-path', clipRect ?\n 'url(' + this.renderer.url + '#' + clipRect.id + ')' :\n 'none');\n };\n /**\n * Calculate the coordinates needed for drawing a rectangle crisply and\n * return the calculated attributes.\n *\n * @function Highcharts.SVGElement#crisp\n *\n * @param {Highcharts.RectangleObject} rect\n * Rectangle to crisp.\n *\n * @param {number} [strokeWidth]\n * The stroke width to consider when computing crisp positioning. It can\n * also be set directly on the rect parameter.\n *\n * @return {Highcharts.RectangleObject}\n * The modified rectangle arguments.\n */\n SVGElement.prototype.crisp = function (rect, strokeWidth) {\n var wrapper = this;\n strokeWidth = strokeWidth || rect.strokeWidth || 0;\n // Math.round because strokeWidth can sometimes have roundoff errors\n var normalizer = Math.round(strokeWidth) % 2 / 2;\n // normalize for crisp edges\n rect.x = Math.floor(rect.x || wrapper.x || 0) + normalizer;\n rect.y = Math.floor(rect.y || wrapper.y || 0) + normalizer;\n rect.width = Math.floor((rect.width || wrapper.width || 0) - 2 * normalizer);\n rect.height = Math.floor((rect.height || wrapper.height || 0) - 2 * normalizer);\n if (defined(rect.strokeWidth)) {\n rect.strokeWidth = strokeWidth;\n }\n return rect;\n };\n /**\n * Build and apply an SVG gradient out of a common JavaScript configuration\n * object. This function is called from the attribute setters. An event\n * hook is added for supporting other complex color types.\n *\n * @private\n * @function Highcharts.SVGElement#complexColor\n *\n * @param {Highcharts.GradientColorObject|Highcharts.PatternObject} colorOptions\n * The gradient or pattern options structure.\n *\n * @param {string} prop\n * The property to apply, can either be `fill` or `stroke`.\n *\n * @param {Highcharts.SVGDOMElement} elem\n * SVG element to apply the gradient on.\n */\n SVGElement.prototype.complexColor = function (colorOptions, prop, elem) {\n var renderer = this.renderer;\n var colorObject,\n gradName,\n gradAttr,\n radAttr,\n gradients,\n stops,\n stopColor,\n stopOpacity,\n radialReference,\n id,\n key = [],\n value;\n fireEvent(this.renderer, 'complexColor', {\n args: arguments\n }, function () {\n // Apply linear or radial gradients\n if (colorOptions.radialGradient) {\n gradName = 'radialGradient';\n }\n else if (colorOptions.linearGradient) {\n gradName = 'linearGradient';\n }\n if (gradName) {\n gradAttr = colorOptions[gradName];\n gradients = renderer.gradients;\n stops = colorOptions.stops;\n radialReference = elem.radialReference;\n // Keep < 2.2 kompatibility\n if (isArray(gradAttr)) {\n colorOptions[gradName] = gradAttr = {\n x1: gradAttr[0],\n y1: gradAttr[1],\n x2: gradAttr[2],\n y2: gradAttr[3],\n gradientUnits: 'userSpaceOnUse'\n };\n }\n // Correct the radial gradient for the radial reference system\n if (gradName === 'radialGradient' &&\n radialReference &&\n !defined(gradAttr.gradientUnits)) {\n // Save the radial attributes for updating\n radAttr = gradAttr;\n gradAttr = merge(gradAttr, renderer.getRadialAttr(radialReference, radAttr), { gradientUnits: 'userSpaceOnUse' });\n }\n // Build the unique key to detect whether we need to create a\n // new element (#1282)\n objectEach(gradAttr, function (value, n) {\n if (n !== 'id') {\n key.push(n, value);\n }\n });\n objectEach(stops, function (val) {\n key.push(val);\n });\n key = key.join(',');\n // Check if a gradient object with the same config object is\n // created within this renderer\n if (gradients[key]) {\n id = gradients[key].attr('id');\n }\n else {\n // Set the id and create the element\n gradAttr.id = id = uniqueKey();\n var gradientObject_1 = gradients[key] =\n renderer.createElement(gradName)\n .attr(gradAttr)\n .add(renderer.defs);\n gradientObject_1.radAttr = radAttr;\n // The gradient needs to keep a list of stops to be able to\n // destroy them\n gradientObject_1.stops = [];\n stops.forEach(function (stop) {\n if (stop[1].indexOf('rgba') === 0) {\n colorObject = Color.parse(stop[1]);\n stopColor = colorObject.get('rgb');\n stopOpacity = colorObject.get('a');\n }\n else {\n stopColor = stop[1];\n stopOpacity = 1;\n }\n var stopObject = renderer.createElement('stop').attr({\n offset: stop[0],\n 'stop-color': stopColor,\n 'stop-opacity': stopOpacity\n }).add(gradientObject_1);\n // Add the stop element to the gradient\n gradientObject_1.stops.push(stopObject);\n });\n }\n // Set the reference to the gradient object\n value = 'url(' + renderer.url + '#' + id + ')';\n elem.setAttribute(prop, value);\n elem.gradient = key;\n // Allow the color to be concatenated into tooltips formatters\n // etc. (#2995)\n colorOptions.toString = function () {\n return value;\n };\n }\n });\n };\n /**\n * Set styles for the element. In addition to CSS styles supported by\n * native SVG and HTML elements, there are also some custom made for\n * Highcharts, like `width`, `ellipsis` and `textOverflow` for SVG text\n * elements.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Styled text\n *\n * @function Highcharts.SVGElement#css\n *\n * @param {Highcharts.CSSObject} styles\n * The new CSS styles.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chaining.\n */\n SVGElement.prototype.css = function (styles) {\n var oldStyles = this.styles,\n newStyles = {},\n elem = this.element;\n var textWidth,\n hasNew = !oldStyles;\n // convert legacy\n if (styles.color) {\n styles.fill = styles.color;\n }\n // Filter out existing styles to increase performance (#2640)\n if (oldStyles) {\n objectEach(styles, function (value, n) {\n if (oldStyles && oldStyles[n] !== value) {\n newStyles[n] = value;\n hasNew = true;\n }\n });\n }\n if (hasNew) {\n // Merge the new styles with the old ones\n if (oldStyles) {\n styles = extend(oldStyles, newStyles);\n }\n // Get the text width from style\n // Previously set, unset it (#8234)\n if (styles.width === null || styles.width === 'auto') {\n delete this.textWidth;\n // Apply new\n }\n else if (elem.nodeName.toLowerCase() === 'text' &&\n styles.width) {\n textWidth = this.textWidth = pInt(styles.width);\n }\n // store object\n this.styles = styles;\n if (textWidth && (!svg && this.renderer.forExport)) {\n delete styles.width;\n }\n var stylesToApply_1 = merge(styles);\n if (elem.namespaceURI === this.SVG_NS) {\n // These CSS properties are interpreted internally by the SVG\n // renderer, but are not supported by SVG and should not be\n // added to the DOM. In styled mode, no CSS should find its way\n // to the DOM whatsoever (#6173, #6474).\n ['textOutline', 'textOverflow', 'width'].forEach(function (key) { return (stylesToApply_1 &&\n delete stylesToApply_1[key]); });\n }\n css(elem, stylesToApply_1);\n if (this.added) {\n // Rebuild text after added. Cache mechanisms in the buildText\n // will prevent building if there are no significant changes.\n if (this.element.nodeName === 'text') {\n this.renderer.buildText(this);\n }\n // Apply text outline after added\n if (styles.textOutline) {\n this.applyTextOutline(styles.textOutline);\n }\n }\n }\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dashstyleSetter\n * @param {string} value\n */\n SVGElement.prototype.dashstyleSetter = function (value) {\n var i,\n strokeWidth = this['stroke-width'];\n // If \"inherit\", like maps in IE, assume 1 (#4981). With HC5 and the new\n // strokeWidth function, we should be able to use that instead.\n if (strokeWidth === 'inherit') {\n strokeWidth = 1;\n }\n value = value && value.toLowerCase();\n if (value) {\n var v = value\n .replace('shortdashdotdot', '3,1,1,1,1,1,')\n .replace('shortdashdot', '3,1,1,1')\n .replace('shortdot', '1,1,')\n .replace('shortdash', '3,1,')\n .replace('longdash', '8,3,')\n .replace(/dot/g, '1,3,')\n .replace('dash', '4,3,')\n .replace(/,$/, '')\n .split(','); // ending comma\n i = v.length;\n while (i--) {\n v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));\n }\n value = v.join(',').replace(/NaN/g, 'none'); // #3226\n this.element.setAttribute('stroke-dasharray', value);\n }\n };\n /**\n * Destroy the element and element wrapper and clear up the DOM and event\n * hooks.\n *\n * @function Highcharts.SVGElement#destroy\n */\n SVGElement.prototype.destroy = function () {\n var wrapper = this,\n element = wrapper.element || {},\n renderer = wrapper.renderer,\n ownerSVGElement = element.ownerSVGElement;\n var parentToClean = (renderer.isSVG &&\n element.nodeName === 'SPAN' &&\n wrapper.parentGroup ||\n void 0),\n grandParent,\n i;\n // remove events\n element.onclick = element.onmouseout = element.onmouseover =\n element.onmousemove = element.point = null;\n stop(wrapper); // stop running animations\n if (wrapper.clipPath && ownerSVGElement) {\n var clipPath_1 = wrapper.clipPath;\n // Look for existing references to this clipPath and remove them\n // before destroying the element (#6196).\n // The upper case version is for Edge\n [].forEach.call(ownerSVGElement.querySelectorAll('[clip-path],[CLIP-PATH]'), function (el) {\n if (el.getAttribute('clip-path').indexOf(clipPath_1.element.id) > -1) {\n el.removeAttribute('clip-path');\n }\n });\n wrapper.clipPath = clipPath_1.destroy();\n }\n // Destroy stops in case this is a gradient object @todo old code?\n if (wrapper.stops) {\n for (i = 0; i < wrapper.stops.length; i++) {\n wrapper.stops[i].destroy();\n }\n wrapper.stops.length = 0;\n wrapper.stops = void 0;\n }\n // remove element\n wrapper.safeRemoveChild(element);\n if (!renderer.styledMode) {\n wrapper.destroyShadows();\n }\n // In case of useHTML, clean up empty containers emulating SVG groups\n // (#1960, #2393, #2697).\n while (parentToClean &&\n parentToClean.div &&\n parentToClean.div.childNodes.length === 0) {\n grandParent = parentToClean.parentGroup;\n wrapper.safeRemoveChild(parentToClean.div);\n delete parentToClean.div;\n parentToClean = grandParent;\n }\n // remove from alignObjects\n if (wrapper.alignTo) {\n erase(renderer.alignedObjects, wrapper);\n }\n objectEach(wrapper, function (val, key) {\n // Destroy child elements of a group\n if (wrapper[key] &&\n wrapper[key].parentGroup === wrapper &&\n wrapper[key].destroy) {\n wrapper[key].destroy();\n }\n // Delete all properties\n delete wrapper[key];\n });\n return;\n };\n /**\n * Destroy shadows on the element.\n *\n * @private\n * @function Highcharts.SVGElement#destroyShadows\n *\n */\n SVGElement.prototype.destroyShadows = function () {\n (this.shadows || []).forEach(function (shadow) {\n this.safeRemoveChild(shadow);\n }, this);\n this.shadows = void 0;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dSettter\n * @param {number|string|Highcharts.SVGPathArray} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.dSetter = function (value, key, element) {\n if (isArray(value)) {\n // Backwards compatibility, convert one-dimensional array into an\n // array of segments\n if (typeof value[0] === 'string') {\n value = this.renderer.pathToSegments(value);\n }\n this.pathArray = value;\n value = value.reduce(function (acc, seg, i) {\n if (!seg || !seg.join) {\n return (seg || '').toString();\n }\n return (i ? acc + ' ' : '') + seg.join(' ');\n }, '');\n }\n if (/(NaN| {2}|^$)/.test(value)) {\n value = 'M 0 0';\n }\n // Check for cache before resetting. Resetting causes disturbance in the\n // DOM, causing flickering in some cases in Edge/IE (#6747). Also\n // possible performance gain.\n if (this[key] !== value) {\n element.setAttribute(key, value);\n this[key] = value;\n }\n };\n /**\n * Fade out an element by animating its opacity down to 0, and hide it on\n * complete. Used internally for the tooltip.\n *\n * @function Highcharts.SVGElement#fadeOut\n *\n * @param {number} [duration=150]\n * The fade duration in milliseconds.\n */\n SVGElement.prototype.fadeOut = function (duration) {\n var elemWrapper = this;\n elemWrapper.animate({\n opacity: 0\n }, {\n duration: pick(duration, 150),\n complete: function () {\n // #3088, assuming we're only using this for tooltips\n elemWrapper.hide();\n }\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#fillSetter\n * @param {Highcharts.ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.fillSetter = function (value, key, element) {\n if (typeof value === 'string') {\n element.setAttribute(key, value);\n }\n else if (value) {\n this.complexColor(value, key, element);\n }\n };\n /**\n * Get the bounding box (width, height, x and y) for the element. Generally\n * used to get rendered text size. Since this is called a lot in charts,\n * the results are cached based on text properties, in order to save DOM\n * traffic. The returned bounding box includes the rotation, so for example\n * a single text line of rotation 90 will report a greater height, and a\n * width corresponding to the line-height.\n *\n * @sample highcharts/members/renderer-on-chart/\n * Draw a rectangle based on a text's bounding box\n *\n * @function Highcharts.SVGElement#getBBox\n *\n * @param {boolean} [reload]\n * Skip the cache and get the updated DOM bouding box.\n *\n * @param {number} [rot]\n * Override the element's rotation. This is internally used on axis\n * labels with a value of 0 to find out what the bounding box would\n * be have been if it were not rotated.\n *\n * @return {Highcharts.BBoxObject}\n * The bounding box with `x`, `y`, `width` and `height` properties.\n */\n SVGElement.prototype.getBBox = function (reload, rot) {\n var wrapper = this,\n alignValue = wrapper.alignValue,\n element = wrapper.element,\n renderer = wrapper.renderer,\n styles = wrapper.styles,\n textStr = wrapper.textStr,\n cache = renderer.cache,\n cacheKeys = renderer.cacheKeys,\n isSVG = element.namespaceURI === wrapper.SVG_NS,\n rotation = pick(rot,\n wrapper.rotation, 0),\n fontSize = renderer.styledMode ? (element &&\n SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles && styles.fontSize);\n var bBox,\n width,\n height,\n toggleTextShadowShim,\n cacheKey;\n // Avoid undefined and null (#7316)\n if (defined(textStr)) {\n cacheKey = textStr.toString();\n // Since numbers are monospaced, and numerical labels appear a lot\n // in a chart, we assume that a label of n characters has the same\n // bounding box as others of the same length. Unless there is inner\n // HTML in the label. In that case, leave the numbers as is (#5899).\n if (cacheKey.indexOf('<') === -1) {\n cacheKey = cacheKey.replace(/[0-9]/g, '0');\n }\n // Properties that affect bounding box\n cacheKey += [\n '',\n rotation,\n fontSize,\n wrapper.textWidth,\n alignValue,\n styles && styles.textOverflow,\n styles && styles.fontWeight // #12163\n ].join(',');\n }\n if (cacheKey && !reload) {\n bBox = cache[cacheKey];\n }\n // No cache found\n if (!bBox) {\n // SVG elements\n if (isSVG || renderer.forExport) {\n try { // Fails in Firefox if the container has display: none.\n // When the text shadow shim is used, we need to hide the\n // fake shadows to get the correct bounding box (#3872)\n toggleTextShadowShim = this.fakeTS && function (display) {\n var outline = element.querySelector('.highcharts-text-outline');\n if (outline) {\n css(outline, { display: display });\n }\n };\n // Workaround for #3842, Firefox reporting wrong bounding\n // box for shadows\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('none');\n }\n bBox = element.getBBox ?\n // SVG: use extend because IE9 is not allowed to change\n // width and height in case of rotation (below)\n extend({}, element.getBBox()) : {\n // HTML elements with `exporting.allowHTML` and\n // legacy IE in export mode\n width: element.offsetWidth,\n height: element.offsetHeight,\n x: 0,\n y: 0\n };\n // #3842\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('');\n }\n }\n catch (e) {\n '';\n }\n // If the bBox is not set, the try-catch block above failed. The\n // other condition is for Opera that returns a width of\n // -Infinity on hidden elements.\n if (!bBox || bBox.width < 0) {\n bBox = { x: 0, y: 0, width: 0, height: 0 };\n }\n // VML Renderer or useHTML within SVG\n }\n else {\n bBox = wrapper.htmlGetBBox();\n }\n // True SVG elements as well as HTML elements in modern browsers\n // using the .useHTML option need to compensated for rotation\n if (renderer.isSVG) {\n width = bBox.width;\n height = bBox.height;\n // Workaround for wrong bounding box in IE, Edge and Chrome on\n // Windows. With Highcharts' default font, IE and Edge report\n // a box height of 16.899 and Chrome rounds it to 17. If this\n // stands uncorrected, it results in more padding added below\n // the text than above when adding a label border or background.\n // Also vertical positioning is affected.\n // https://jsfiddle.net/highcharts/em37nvuj/\n // (#1101, #1505, #1669, #2568, #6213).\n if (isSVG) {\n bBox.height = height = ({\n '11px,17': 14,\n '13px,20': 16\n }[\"\" + (fontSize || '') + \",\".concat(Math.round(height))] ||\n height);\n }\n // Adjust for rotated text\n if (rotation) {\n var baseline = Number(element.getAttribute('y') || 0) - bBox.y,\n alignFactor = {\n 'right': 1,\n 'center': 0.5\n }[alignValue || 0] || 0,\n rad = rotation * deg2rad,\n rad90 = (rotation - 90) * deg2rad,\n wCosRad = width * Math.cos(rad),\n wSinRad = width * Math.sin(rad),\n cosRad90 = Math.cos(rad90),\n sinRad90 = Math.sin(rad90), \n // Find the starting point on the left side baseline of\n // the text\n pX = bBox.x + alignFactor * (width - wCosRad),\n pY = bBox.y + baseline - alignFactor * wSinRad, \n // Find all corners\n aX = pX + baseline * cosRad90,\n bX = aX + wCosRad,\n cX = bX - height * cosRad90,\n dX = cX - wCosRad,\n aY = pY + baseline * sinRad90,\n bY = aY + wSinRad,\n cY = bY - height * sinRad90,\n dY = cY - wSinRad;\n // Deduct the bounding box from the corners\n bBox.x = Math.min(aX, bX, cX, dX);\n bBox.y = Math.min(aY, bY, cY, dY);\n bBox.width = Math.max(aX, bX, cX, dX) - bBox.x;\n bBox.height = Math.max(aY, bY, cY, dY) - bBox.y;\n }\n }\n // Cache it. When loading a chart in a hidden iframe in Firefox and\n // IE/Edge, the bounding box height is 0, so don't cache it (#5620).\n if (cacheKey && (textStr === '' || bBox.height > 0)) {\n // Rotate (#4681)\n while (cacheKeys.length > 250) {\n delete cache[cacheKeys.shift()];\n }\n if (!cache[cacheKey]) {\n cacheKeys.push(cacheKey);\n }\n cache[cacheKey] = bBox;\n }\n }\n return bBox;\n };\n /**\n * Get the computed style. Only in styled mode.\n *\n * @example\n * chart.series[0].points[0].graphic.getStyle('stroke-width'); // => '1px'\n *\n * @function Highcharts.SVGElement#getStyle\n *\n * @param {string} prop\n * The property name to check for.\n *\n * @return {string}\n * The current computed value.\n */\n SVGElement.prototype.getStyle = function (prop) {\n return win\n .getComputedStyle(this.element || this, '')\n .getPropertyValue(prop);\n };\n /**\n * Check if an element has the given class name.\n *\n * @function Highcharts.SVGElement#hasClass\n *\n * @param {string} className\n * The class name to check for.\n *\n * @return {boolean}\n * Whether the class name is found.\n */\n SVGElement.prototype.hasClass = function (className) {\n return ('' + this.attr('class'))\n .split(' ')\n .indexOf(className) !== -1;\n };\n /**\n * Hide the element, similar to setting the `visibility` attribute to\n * `hidden`.\n *\n * @function Highcharts.SVGElement#hide\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.hide = function () {\n return this.attr({ visibility: 'hidden' });\n };\n /**\n * @private\n */\n SVGElement.prototype.htmlGetBBox = function () {\n return { height: 0, width: 0, x: 0, y: 0 };\n };\n /**\n * Initialize the SVG element. This function only exists to make the\n * initialization process overridable. It should not be called directly.\n *\n * @function Highcharts.SVGElement#init\n *\n * @param {Highcharts.SVGRenderer} renderer\n * The SVGRenderer instance to initialize to.\n *\n * @param {string} nodeName\n * The SVG node name.\n */\n SVGElement.prototype.init = function (renderer, nodeName) {\n /**\n * The primary DOM node. Each `SVGElement` instance wraps a main DOM\n * node, but may also represent more nodes.\n *\n * @name Highcharts.SVGElement#element\n * @type {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}\n */\n this.element = nodeName === 'span' ?\n createElement(nodeName) :\n doc.createElementNS(this.SVG_NS, nodeName);\n /**\n * The renderer that the SVGElement belongs to.\n *\n * @name Highcharts.SVGElement#renderer\n * @type {Highcharts.SVGRenderer}\n */\n this.renderer = renderer;\n fireEvent(this, 'afterInit');\n };\n /**\n * Add an event listener. This is a simple setter that replaces the\n * previous event of the same type added by this function, as opposed to\n * the {@link Highcharts#addEvent} function.\n *\n * @sample highcharts/members/element-on/\n * A clickable rectangle\n *\n * @function Highcharts.SVGElement#on\n *\n * @param {string} eventType\n * The event type.\n *\n * @param {Function} handler\n * The handler callback.\n *\n * @return {Highcharts.SVGElement}\n * The SVGElement for chaining.\n */\n SVGElement.prototype.on = function (eventType, handler) {\n var onEvents = this.onEvents;\n if (onEvents[eventType]) {\n // Unbind existing event\n onEvents[eventType]();\n }\n onEvents[eventType] = addEvent(this.element, eventType, handler);\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#opacitySetter\n * @param {string} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.opacitySetter = function (value, key, element) {\n // Round off to avoid float errors, like tests where opacity lands on\n // 9.86957e-06 instead of 0\n var opacity = Number(Number(value).toFixed(3));\n this.opacity = opacity;\n element.setAttribute(key, opacity);\n };\n /**\n * Remove a class name from the element.\n *\n * @function Highcharts.SVGElement#removeClass\n *\n * @param {string|RegExp} className\n * The class name to remove.\n *\n * @return {Highcharts.SVGElement} Returns the SVG element for chainability.\n */\n SVGElement.prototype.removeClass = function (className) {\n return this.attr('class', ('' + this.attr('class'))\n .replace(isString(className) ?\n new RegExp(\"(^| )\".concat(className, \"( |$)\")) : // #12064, #13590\n className, ' ')\n .replace(/ +/g, ' ')\n .trim());\n };\n /**\n *\n * @private\n */\n SVGElement.prototype.removeTextOutline = function () {\n var outline = this.element\n .querySelector('tspan.highcharts-text-outline');\n if (outline) {\n this.safeRemoveChild(outline);\n }\n };\n /**\n * Removes an element from the DOM.\n *\n * @private\n * @function Highcharts.SVGElement#safeRemoveChild\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The DOM node to remove.\n */\n SVGElement.prototype.safeRemoveChild = function (element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n parentNode.removeChild(element);\n }\n };\n /**\n * Set the coordinates needed to draw a consistent radial gradient across\n * a shape regardless of positioning inside the chart. Used on pie slices\n * to make all the slices have the same radial reference point.\n *\n * @function Highcharts.SVGElement#setRadialReference\n *\n * @param {Array} coordinates\n * The center reference. The format is `[centerX, centerY, diameter]` in\n * pixels.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setRadialReference = function (coordinates) {\n var existingGradient = (this.element.gradient &&\n this.renderer.gradients[this.element.gradient]);\n this.element.radialReference = coordinates;\n // On redrawing objects with an existing gradient, the gradient needs\n // to be repositioned (#3801)\n if (existingGradient && existingGradient.radAttr) {\n existingGradient.animate(this.renderer.getRadialAttr(coordinates, existingGradient.radAttr));\n }\n return this;\n };\n /**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n * Path to follow. If undefined, it allows changing options for the\n * existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n * Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setTextPath = function (path, textPathOptions) {\n var _this = this;\n // Defaults\n textPathOptions = merge(true, {\n enabled: true,\n attributes: {\n dy: -5,\n startOffset: '50%',\n textAnchor: 'middle'\n }\n }, textPathOptions);\n var url = this.renderer.url,\n textWrapper = this.text || this,\n textPath = textWrapper.textPath,\n attributes = textPathOptions.attributes,\n enabled = textPathOptions.enabled;\n path = path || (textPath && textPath.path);\n // Remove previously added event\n if (textPath) {\n textPath.undo();\n }\n if (path && enabled) {\n var undo = addEvent(textWrapper, 'afterModifyTree',\n function (e) {\n if (path && enabled) {\n // Set ID for the path\n var textPathId = path.attr('id');\n if (!textPathId) {\n path.attr('id', textPathId = uniqueKey());\n }\n // Set attributes for the \n var textAttribs = {\n // dx/dy options must by set on (parent), the\n // rest should be set on \n x: 0,\n y: 0\n };\n if (defined(attributes.dx)) {\n textAttribs.dx = attributes.dx;\n delete attributes.dx;\n }\n if (defined(attributes.dy)) {\n textAttribs.dy = attributes.dy;\n delete attributes.dy;\n }\n textWrapper.attr(textAttribs);\n // Handle label properties\n _this.attr({ transform: '' });\n if (_this.box) {\n _this.box = _this.box.destroy();\n }\n // Wrap the nodes in a textPath\n var children = e.nodes.slice(0);\n e.nodes.length = 0;\n e.nodes[0] = {\n tagName: 'textPath',\n attributes: extend(attributes, {\n 'text-anchor': attributes.textAnchor,\n href: \"\" + url + \"#\".concat(textPathId)\n }),\n children: children\n };\n }\n });\n // Set the reference\n textWrapper.textPath = { path: path, undo: undo };\n }\n else {\n textWrapper.attr({ dx: 0, dy: 0 });\n delete textWrapper.textPath;\n }\n if (this.added) {\n // Rebuild text after added\n textWrapper.textCache = '';\n this.renderer.buildText(textWrapper);\n }\n return this;\n };\n /**\n * Add a shadow to the element. Must be called after the element is added to\n * the DOM. In styled mode, this method is not used, instead use `defs` and\n * filters.\n *\n * @example\n * renderer.rect(10, 100, 100, 100)\n * .attr({ fill: 'red' })\n * .shadow(true);\n *\n * @function Highcharts.SVGElement#shadow\n *\n * @param {boolean|Highcharts.ShadowOptionsObject} [shadowOptions]\n * The shadow options. If `true`, the default options are applied. If\n * `false`, the current shadow will be removed.\n *\n * @param {Highcharts.SVGElement} [group]\n * The SVG group element where the shadows will be applied. The\n * default is to add it to the same parent as the current element.\n * Internally, this is ised for pie slices, where all the shadows are\n * added to an element behind all the slices.\n *\n * @param {boolean} [cutOff]\n * Used internally for column shadows.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.shadow = function (shadowOptions, group, cutOff) {\n var shadows = [],\n _a = this,\n element = _a.element,\n oldShadowOptions = _a.oldShadowOptions,\n parentGroup = _a.parentGroup,\n parentInverted = parentGroup && parentGroup.rotation === 90,\n defaultShadowOptions = {\n color: \"#000000\" /* Palette.neutralColor100 */,\n offsetX: parentInverted ? -1 : 1,\n offsetY: parentInverted ? -1 : 1,\n opacity: 0.15,\n width: 3\n };\n var i,\n shadow,\n strokeWidth,\n shadowElementOpacity,\n update = false, \n // compensate for inverted plot area\n transform,\n options;\n if (shadowOptions === true) {\n options = defaultShadowOptions;\n }\n else if (typeof shadowOptions === 'object') {\n options = extend(defaultShadowOptions, shadowOptions);\n }\n // Update shadow when options change (#12091).\n if (options) {\n // Go over each key to look for change\n if (options && oldShadowOptions) {\n objectEach(options, function (value, key) {\n if (value !== oldShadowOptions[key]) {\n update = true;\n }\n });\n }\n if (update) {\n this.destroyShadows();\n }\n this.oldShadowOptions = options;\n }\n if (!options) {\n this.destroyShadows();\n }\n else if (!this.shadows) {\n shadowElementOpacity = options.opacity / options.width;\n transform = parentInverted ?\n \"translate(\".concat(options.offsetY, \", \").concat(options.offsetX, \")\") :\n \"translate(\".concat(options.offsetX, \", \").concat(options.offsetY, \")\");\n for (i = 1; i <= options.width; i++) {\n shadow = element.cloneNode(false);\n strokeWidth = (options.width * 2) + 1 - (2 * i);\n attr(shadow, {\n stroke: (shadowOptions.color ||\n \"#000000\" /* Palette.neutralColor100 */),\n 'stroke-opacity': shadowElementOpacity * i,\n 'stroke-width': strokeWidth,\n transform: transform,\n fill: 'none'\n });\n shadow.setAttribute('class', (shadow.getAttribute('class') || '') + ' highcharts-shadow');\n if (cutOff) {\n attr(shadow, 'height', Math.max(attr(shadow, 'height') - strokeWidth, 0));\n shadow.cutHeight = strokeWidth;\n }\n if (group) {\n group.element.appendChild(shadow);\n }\n else if (element.parentNode) {\n element.parentNode.insertBefore(shadow, element);\n }\n shadows.push(shadow);\n }\n this.shadows = shadows;\n }\n return this;\n };\n /**\n * Show the element after it has been hidden.\n *\n * @function Highcharts.SVGElement#show\n *\n * @param {boolean} [inherit=true]\n * Set the visibility attribute to `inherit` rather than `visible`.\n * The difference is that an element with `visibility=\"visible\"`\n * will be visible even if the parent is hidden.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.show = function (inherit) {\n if (inherit === void 0) { inherit = true; }\n return this.attr({ visibility: inherit ? 'inherit' : 'visible' });\n };\n /**\n * Set the stroke-width and record it on the SVGElement\n *\n * @private\n * @function Highcharts.SVGElement#strokeSetter\n * @param {number|string|ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype['stroke-widthSetter'] = function (value, key, element) {\n // Record it for quick access in getter\n this[key] = value;\n element.setAttribute(key, value);\n };\n /**\n * Get the computed stroke width in pixel values. This is used extensively\n * when drawing shapes to ensure the shapes are rendered crisp and\n * positioned correctly relative to each other. Using\n * `shape-rendering: crispEdges` leaves us less control over positioning,\n * for example when we want to stack columns next to each other, or position\n * things pixel-perfectly within the plot box.\n *\n * The common pattern when placing a shape is:\n * - Create the SVGElement and add it to the DOM. In styled mode, it will\n * now receive a stroke width from the style sheet. In classic mode we\n * will add the `stroke-width` attribute.\n * - Read the computed `elem.strokeWidth()`.\n * - Place it based on the stroke width.\n *\n * @function Highcharts.SVGElement#strokeWidth\n *\n * @return {number}\n * The stroke width in pixels. Even if the given stroke widtch (in CSS or by\n * attributes) is based on `em` or other units, the pixel size is returned.\n */\n SVGElement.prototype.strokeWidth = function () {\n // In non-styled mode, read the stroke width as set by .attr\n if (!this.renderer.styledMode) {\n return this['stroke-width'] || 0;\n }\n // In styled mode, read computed stroke width\n var val = this.getStyle('stroke-width');\n var ret = 0,\n dummy;\n // Read pixel values directly\n if (val.indexOf('px') === val.length - 2) {\n ret = pInt(val);\n // Other values like em, pt etc need to be measured\n }\n else if (val !== '') {\n dummy = doc.createElementNS(SVG_NS, 'rect');\n attr(dummy, {\n width: val,\n 'stroke-width': 0\n });\n this.element.parentNode.appendChild(dummy);\n ret = dummy.getBBox().width;\n dummy.parentNode.removeChild(dummy);\n }\n return ret;\n };\n /**\n * If one of the symbol size affecting parameters are changed,\n * check all the others only once for each call to an element's\n * .attr() method\n *\n * @private\n * @function Highcharts.SVGElement#symbolAttr\n *\n * @param {Highcharts.SVGAttributes} hash\n * The attributes to set.\n */\n SVGElement.prototype.symbolAttr = function (hash) {\n var wrapper = this;\n [\n 'x',\n 'y',\n 'r',\n 'start',\n 'end',\n 'width',\n 'height',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'clockwise'\n ].forEach(function (key) {\n wrapper[key] = pick(hash[key], wrapper[key]);\n });\n wrapper.attr({\n d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#textSetter\n * @param {string} value\n */\n SVGElement.prototype.textSetter = function (value) {\n if (value !== this.textStr) {\n // Delete size caches when the text changes\n // delete this.bBox; // old code in series-label\n delete this.textPxLength;\n this.textStr = value;\n if (this.added) {\n this.renderer.buildText(this);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#titleSetter\n * @param {string} value\n */\n SVGElement.prototype.titleSetter = function (value) {\n var el = this.element;\n var titleNode = el.getElementsByTagName('title')[0] ||\n doc.createElementNS(this.SVG_NS, 'title');\n // Move to first child\n if (el.insertBefore) {\n el.insertBefore(titleNode, el.firstChild);\n }\n else {\n el.appendChild(titleNode);\n }\n // Replace text content and escape markup\n titleNode.textContent =\n // #3276, #3895\n String(pick(value, ''))\n .replace(/<[^>]*>/g, '')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n };\n /**\n * Bring the element to the front. Alternatively, a new zIndex can be set.\n *\n * @sample highcharts/members/element-tofront/\n * Click an element to bring it to front\n *\n * @function Highcharts.SVGElement#toFront\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.toFront = function () {\n var element = this.element;\n element.parentNode.appendChild(element);\n return this;\n };\n /**\n * Move an object and its children by x and y values.\n *\n * @function Highcharts.SVGElement#translate\n *\n * @param {number} x\n * The x value.\n *\n * @param {number} y\n * The y value.\n *\n * @return {Highcharts.SVGElement}\n * Translated element.\n */\n SVGElement.prototype.translate = function (x, y) {\n return this.attr({\n translateX: x,\n translateY: y\n });\n };\n /**\n * Update the shadow elements with new attributes.\n *\n * @private\n * @function Highcharts.SVGElement#updateShadows\n *\n * @param {string} key\n * The attribute name.\n *\n * @param {number} value\n * The value of the attribute.\n *\n * @param {Function} setter\n * The setter function, inherited from the parent wrapper.\n */\n SVGElement.prototype.updateShadows = function (key, value, setter) {\n var shadows = this.shadows;\n if (shadows) {\n var i = shadows.length;\n while (i--) {\n setter.call(shadows[i], key === 'height' ?\n Math.max(value - (shadows[i].cutHeight || 0), 0) :\n key === 'd' ? this.d : value, key, shadows[i]);\n }\n }\n };\n /**\n * Update the transform attribute based on internal properties. Deals with\n * the custom `translateX`, `translateY`, `rotation`, `scaleX` and `scaleY`\n * attributes and updates the SVG `transform` attribute.\n *\n * @private\n * @function Highcharts.SVGElement#updateTransform\n */\n SVGElement.prototype.updateTransform = function () {\n var _a = this,\n element = _a.element,\n matrix = _a.matrix,\n _b = _a.rotation,\n rotation = _b === void 0 ? 0 : _b,\n scaleX = _a.scaleX,\n scaleY = _a.scaleY,\n _c = _a.translateX,\n translateX = _c === void 0 ? 0 : _c,\n _d = _a.translateY,\n translateY = _d === void 0 ? 0 : _d;\n // Apply translate. Nearly all transformed elements have translation,\n // so instead of checking for translate = 0, do it always (#1767,\n // #1846).\n var transform = ['translate(' + translateX + ',' + translateY + ')'];\n // apply matrix\n if (defined(matrix)) {\n transform.push('matrix(' + matrix.join(',') + ')');\n }\n // Apply rotation\n if (rotation) { // text rotation or inverted chart\n transform.push('rotate(' + rotation + ' ' +\n pick(this.rotationOriginX, element.getAttribute('x'), 0) +\n ' ' +\n pick(this.rotationOriginY, element.getAttribute('y') || 0) + ')');\n }\n // apply scale\n if (defined(scaleX) || defined(scaleY)) {\n transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');\n }\n if (transform.length && !(this.text || this).textPath) {\n element.setAttribute('transform', transform.join(' '));\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#visibilitySetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype.visibilitySetter = function (value, key, element) {\n // IE9-11 doesn't handle visibilty:inherit well, so we remove the\n // attribute instead (#2881, #3909)\n if (value === 'inherit') {\n element.removeAttribute(key);\n }\n else if (this[key] !== value) { // #6747\n element.setAttribute(key, value);\n }\n this[key] = value;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#xGetter\n */\n SVGElement.prototype.xGetter = function (key) {\n if (this.element.nodeName === 'circle') {\n if (key === 'x') {\n key = 'cx';\n }\n else if (key === 'y') {\n key = 'cy';\n }\n }\n return this._defaultGetter(key);\n };\n /**\n * @private\n * @function Highcharts.SVGElement#zIndexSetter\n */\n SVGElement.prototype.zIndexSetter = function (value, key) {\n var renderer = this.renderer,\n parentGroup = this.parentGroup,\n parentWrapper = parentGroup || renderer,\n parentNode = parentWrapper.element || renderer.box,\n element = this.element,\n svgParent = parentNode === renderer.box;\n var childNodes,\n otherElement,\n otherZIndex,\n inserted = false,\n undefinedOtherZIndex,\n run = this.added,\n i;\n if (defined(value)) {\n // So we can read it for other elements in the group\n element.setAttribute('data-z-index', value);\n value = +value;\n if (this[key] === value) {\n // Only update when needed (#3865)\n run = false;\n }\n }\n else if (defined(this[key])) {\n element.removeAttribute('data-z-index');\n }\n this[key] = value;\n // Insert according to this and other elements' zIndex. Before .add() is\n // called, nothing is done. Then on add, or by later calls to\n // zIndexSetter, the node is placed on the right place in the DOM.\n if (run) {\n value = this.zIndex;\n if (value && parentGroup) {\n parentGroup.handleZ = true;\n }\n childNodes = parentNode.childNodes;\n for (i = childNodes.length - 1; i >= 0 && !inserted; i--) {\n otherElement = childNodes[i];\n otherZIndex = otherElement.getAttribute('data-z-index');\n undefinedOtherZIndex = !defined(otherZIndex);\n if (otherElement !== element) {\n if (\n // Negative zIndex versus no zIndex:\n // On all levels except the highest. If the parent is\n // , then we don't want to put items before \n // or \n value < 0 &&\n undefinedOtherZIndex &&\n !svgParent &&\n !i) {\n parentNode.insertBefore(element, childNodes[i]);\n inserted = true;\n }\n else if (\n // Insert after the first element with a lower zIndex\n pInt(otherZIndex) <= value ||\n // If negative zIndex, add this before first undefined\n // zIndex element\n (undefinedOtherZIndex &&\n (!defined(value) || value >= 0))) {\n parentNode.insertBefore(element, childNodes[i + 1] || null // null for oldIE export\n );\n inserted = true;\n }\n }\n }\n if (!inserted) {\n parentNode.insertBefore(element, childNodes[svgParent ? 3 : 0] || null // null for oldIE\n );\n inserted = true;\n }\n }\n return inserted;\n };\n return SVGElement;\n }());\n // Some shared setters and getters\n SVGElement.prototype.strokeSetter = SVGElement.prototype.fillSetter;\n SVGElement.prototype.yGetter = SVGElement.prototype.xGetter;\n SVGElement.prototype.matrixSetter =\n SVGElement.prototype.rotationOriginXSetter =\n SVGElement.prototype.rotationOriginYSetter =\n SVGElement.prototype.rotationSetter =\n SVGElement.prototype.scaleXSetter =\n SVGElement.prototype.scaleYSetter =\n SVGElement.prototype.translateXSetter =\n SVGElement.prototype.translateYSetter =\n SVGElement.prototype.verticalAlignSetter = function (value, key) {\n this[key] = value;\n this.doTransform = true;\n };\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Reference to the global SVGElement class as a workaround for a name conflict\n * in the Highcharts namespace.\n *\n * @global\n * @typedef {global.SVGElement} GlobalSVGElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The horizontal alignment of an element.\n *\n * @typedef {\"center\"|\"left\"|\"right\"} Highcharts.AlignValue\n */\n /**\n * Options to align the element relative to the chart or another box.\n *\n * @interface Highcharts.AlignObject\n */ /**\n * Horizontal alignment. Can be one of `left`, `center` and `right`.\n *\n * @name Highcharts.AlignObject#align\n * @type {Highcharts.AlignValue|undefined}\n *\n * @default left\n */ /**\n * Vertical alignment. Can be one of `top`, `middle` and `bottom`.\n *\n * @name Highcharts.AlignObject#verticalAlign\n * @type {Highcharts.VerticalAlignValue|undefined}\n *\n * @default top\n */ /**\n * Horizontal pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#x\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Vertical pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#y\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Use the `transform` attribute with translateX and translateY custom\n * attributes to align this elements rather than `x` and `y` attributes.\n *\n * @name Highcharts.AlignObject#alignByTranslate\n * @type {boolean|undefined}\n *\n * @default false\n */\n /**\n * Bounding box of an element.\n *\n * @interface Highcharts.BBoxObject\n * @extends Highcharts.PositionObject\n */ /**\n * Height of the bounding box.\n *\n * @name Highcharts.BBoxObject#height\n * @type {number}\n */ /**\n * Width of the bounding box.\n *\n * @name Highcharts.BBoxObject#width\n * @type {number}\n */ /**\n * Horizontal position of the bounding box.\n *\n * @name Highcharts.BBoxObject#x\n * @type {number}\n */ /**\n * Vertical position of the bounding box.\n *\n * @name Highcharts.BBoxObject#y\n * @type {number}\n */\n /**\n * An object of key-value pairs for SVG attributes. Attributes in Highcharts\n * elements for the most parts correspond to SVG, but some are specific to\n * Highcharts, like `zIndex`, `rotation`, `rotationOriginX`,\n * `rotationOriginY`, `translateX`, `translateY`, `scaleX` and `scaleY`. SVG\n * attributes containing a hyphen are _not_ camel-cased, they should be\n * quoted to preserve the hyphen.\n *\n * @example\n * {\n * 'stroke': '#ff0000', // basic\n * 'stroke-width': 2, // hyphenated\n * 'rotation': 45 // custom\n * 'd': ['M', 10, 10, 'L', 30, 30, 'z'] // path definition, note format\n * }\n *\n * @interface Highcharts.SVGAttributes\n */ /**\n * @name Highcharts.SVGAttributes#[key:string]\n * @type {*}\n */ /**\n * @name Highcharts.SVGAttributes#d\n * @type {string|Highcharts.SVGPathArray|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dx\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dy\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#fill\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#matrix\n * @type {Array|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotation\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#stroke\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#style\n * @type {string|Highcharts.CSSObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#zIndex\n * @type {number|undefined}\n */\n /**\n * An SVG DOM element. The type is a reference to the regular SVGElement in the\n * global scope.\n *\n * @typedef {globals.GlobalSVGElement} Highcharts.SVGDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The vertical alignment of an element.\n *\n * @typedef {\"bottom\"|\"middle\"|\"top\"} Highcharts.VerticalAlignValue\n */\n ''; // keeps doclets above in JS file\n\n return SVGElement;\n });\n _registerModule(_modules, 'Core/Renderer/RendererRegistry.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var RendererRegistry;\n (function (RendererRegistry) {\n /* *\n *\n * Constants\n *\n * */\n RendererRegistry.rendererTypes = {};\n /* *\n *\n * Variables\n *\n * */\n var defaultRenderer;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Gets a registered renderer class. If no renderer type is provided or the\n * requested renderer was not founded, the default renderer is returned.\n *\n * @param {string} [rendererType]\n * Renderer type or the default renderer.\n *\n * @return {Highcharts.Class}\n * Returns the requested renderer class or the default renderer class.\n */\n function getRendererType(rendererType) {\n if (rendererType === void 0) { rendererType = defaultRenderer; }\n return (RendererRegistry.rendererTypes[rendererType] || RendererRegistry.rendererTypes[defaultRenderer]);\n }\n RendererRegistry.getRendererType = getRendererType;\n /**\n * Register a renderer class.\n *\n * @param {string} rendererType\n * Renderer type to register.\n *\n * @param {Highcharts.Class} rendererClass\n * Returns the requested renderer class or the default renderer class.\n *\n * @param {boolean} setAsDefault\n * Sets the renderer class as the default renderer.\n */\n function registerRendererType(rendererType, rendererClass, setAsDefault) {\n RendererRegistry.rendererTypes[rendererType] = rendererClass;\n if (!defaultRenderer || setAsDefault) {\n defaultRenderer = rendererType;\n H.Renderer = rendererClass; // compatibility\n }\n }\n RendererRegistry.registerRendererType = registerRendererType;\n })(RendererRegistry || (RendererRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererRegistry;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGLabel.js', [_modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG label to render text.\n * @private\n * @class\n * @name Highcharts.SVGLabel\n * @augments Highcharts.SVGElement\n */\n var SVGLabel = /** @class */ (function (_super) {\n __extends(SVGLabel, _super);\n /* *\n *\n * Constructor\n *\n * */\n function SVGLabel(renderer, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n var _this = _super.call(this) || this;\n _this.paddingLeftSetter = _this.paddingSetter;\n _this.paddingRightSetter = _this.paddingSetter;\n _this.init(renderer, 'g');\n _this.textStr = str;\n _this.x = x;\n _this.y = y;\n _this.anchorX = anchorX;\n _this.anchorY = anchorY;\n _this.baseline = baseline;\n _this.className = className;\n _this.addClass(className === 'button' ?\n 'highcharts-no-tooltip' :\n 'highcharts-label');\n if (className) {\n _this.addClass('highcharts-' + className);\n }\n // Create the text element. An undefined text content prevents redundant\n // box calculation (#16121)\n _this.text = renderer.text(void 0, 0, 0, useHTML).attr({ zIndex: 1 });\n // Validate the shape argument\n var hasBGImage;\n if (typeof shape === 'string') {\n hasBGImage = /^url\\((.*?)\\)$/.test(shape);\n if (hasBGImage || _this.renderer.symbols[shape]) {\n _this.symbolKey = shape;\n }\n }\n _this.bBox = SVGLabel.emptyBBox;\n _this.padding = 3;\n _this.baselineOffset = 0;\n _this.needsBox = renderer.styledMode || hasBGImage;\n _this.deferredAttr = {};\n _this.alignFactor = 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n SVGLabel.prototype.alignSetter = function (value) {\n var alignFactor = ({\n left: 0,\n center: 0.5,\n right: 1\n })[value];\n if (alignFactor !== this.alignFactor) {\n this.alignFactor = alignFactor;\n // Bounding box exists, means we're dynamically changing\n if (this.bBox && isNumber(this.xSetting)) {\n this.attr({ x: this.xSetting }); // #5134\n }\n }\n };\n SVGLabel.prototype.anchorXSetter = function (value, key) {\n this.anchorX = value;\n this.boxAttr(key, Math.round(value) - this.getCrispAdjust() - this.xSetting);\n };\n SVGLabel.prototype.anchorYSetter = function (value, key) {\n this.anchorY = value;\n this.boxAttr(key, value - this.ySetting);\n };\n /*\n * Set a box attribute, or defer it if the box is not yet created\n */\n SVGLabel.prototype.boxAttr = function (key, value) {\n if (this.box) {\n this.box.attr(key, value);\n }\n else {\n this.deferredAttr[key] = value;\n }\n };\n /*\n * Pick up some properties and apply them to the text instead of the\n * wrapper.\n */\n SVGLabel.prototype.css = function (styles) {\n if (styles) {\n var textStyles_1 = {};\n // Create a copy to avoid altering the original object\n // (#537)\n styles = merge(styles);\n SVGLabel.textProps.forEach(function (prop) {\n if (typeof styles[prop] !== 'undefined') {\n textStyles_1[prop] = styles[prop];\n delete styles[prop];\n }\n });\n this.text.css(textStyles_1);\n // Update existing text, box (#9400, #12163, #18212)\n if ('fontSize' in textStyles_1 || 'fontWeight' in textStyles_1) {\n this.updateTextPadding();\n }\n else if ('width' in textStyles_1 || 'textOverflow' in textStyles_1) {\n this.updateBoxSize();\n }\n }\n return SVGElement.prototype.css.call(this, styles);\n };\n /*\n * Destroy and release memory.\n */\n SVGLabel.prototype.destroy = function () {\n // Added by button implementation\n removeEvent(this.element, 'mouseenter');\n removeEvent(this.element, 'mouseleave');\n if (this.text) {\n this.text.destroy();\n }\n if (this.box) {\n this.box = this.box.destroy();\n }\n // Call base implementation to destroy the rest\n SVGElement.prototype.destroy.call(this);\n return void 0;\n };\n SVGLabel.prototype.fillSetter = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n // for animation getter (#6776)\n this.fill = value;\n this.boxAttr(key, value);\n };\n /*\n * Return the bounding box of the box, not the group.\n */\n SVGLabel.prototype.getBBox = function () {\n // If we have a text string and the DOM bBox was 0, it typically means\n // that the label was first rendered hidden, so we need to update the\n // bBox (#15246)\n if (this.textStr && this.bBox.width === 0 && this.bBox.height === 0) {\n this.updateBoxSize();\n }\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n return {\n width: this.width,\n height: this.height,\n x: this.bBox.x - paddingLeft,\n y: this.bBox.y - padding\n };\n };\n SVGLabel.prototype.getCrispAdjust = function () {\n return this.renderer.styledMode && this.box ?\n this.box.strokeWidth() % 2 / 2 :\n (this['stroke-width'] ? parseInt(this['stroke-width'], 10) : 0) % 2 / 2;\n };\n SVGLabel.prototype.heightSetter = function (value) {\n this.heightSetting = value;\n };\n /*\n * After the text element is added, get the desired size of the border\n * box and add it before the text in the DOM.\n */\n SVGLabel.prototype.onAdd = function () {\n this.text.add(this);\n this.attr({\n // Alignment is available now (#3295, 0 not rendered if given\n // as a value)\n text: pick(this.textStr, ''),\n x: this.x || 0,\n y: this.y || 0\n });\n if (this.box && defined(this.anchorX)) {\n this.attr({\n anchorX: this.anchorX,\n anchorY: this.anchorY\n });\n }\n };\n SVGLabel.prototype.paddingSetter = function (value, key) {\n if (!isNumber(value)) {\n this[key] = void 0;\n }\n else if (value !== this[key]) {\n this[key] = value;\n this.updateTextPadding();\n }\n };\n SVGLabel.prototype.rSetter = function (value, key) {\n this.boxAttr(key, value);\n };\n SVGLabel.prototype.shadow = function (b) {\n if (b && !this.renderer.styledMode) {\n this.updateBoxSize();\n if (this.box) {\n this.box.shadow(b);\n }\n }\n return this;\n };\n SVGLabel.prototype.strokeSetter = function (value, key) {\n // for animation getter (#6776)\n this.stroke = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['stroke-widthSetter'] = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n this['stroke-width'] = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['text-alignSetter'] = function (value) {\n this.textAlign = value;\n };\n SVGLabel.prototype.textSetter = function (text) {\n if (typeof text !== 'undefined') {\n // Must use .attr to ensure transforms are done (#10009)\n this.text.attr({ text: text });\n }\n this.updateTextPadding();\n };\n /*\n * This function runs after the label is added to the DOM (when the bounding\n * box is available), and after the text of the label is updated to detect\n * the new bounding box and reflect it in the border box.\n */\n SVGLabel.prototype.updateBoxSize = function () {\n var text = this.text,\n style = text.element.style,\n attribs = {},\n padding = this.padding, \n // #12165 error when width is null (auto)\n // #12163 when fontweight: bold, recalculate bBox withot cache\n // #3295 && 3514 box failure when string equals 0\n bBox = this.bBox = (((!isNumber(this.widthSetting) ||\n !isNumber(this.heightSetting) ||\n this.textAlign) && defined(text.textStr)) ?\n text.getBBox() :\n SVGLabel.emptyBBox);\n var crispAdjust;\n this.width = this.getPaddedWidth();\n this.height = (this.heightSetting || bBox.height || 0) + 2 * padding;\n var metrics = this.renderer.fontMetrics(style && style.fontSize,\n text);\n // Update the label-scoped y offset. Math.min because of inline\n // style (#9400)\n this.baselineOffset = padding + Math.min(\n // When applicable, use the font size of the first line (#15707)\n (this.text.firstLineMetrics || metrics).b, \n // When the height is 0, there is no bBox, so go with the font\n // metrics. Highmaps CSS demos.\n bBox.height || Infinity);\n // #15491: Vertical centering\n if (this.heightSetting) {\n this.baselineOffset += (this.heightSetting - metrics.h) / 2;\n }\n if (this.needsBox && !text.textPath) {\n // Create the border box if it is not already present\n if (!this.box) {\n // Symbol definition exists (#5324)\n var box = this.box = this.symbolKey ?\n this.renderer.symbol(this.symbolKey) :\n this.renderer.rect();\n box.addClass(// Don't use label className for buttons\n (this.className === 'button' ?\n '' : 'highcharts-label-box') +\n (this.className ?\n ' highcharts-' + this.className + '-box' : ''));\n box.add(this);\n }\n crispAdjust = this.getCrispAdjust();\n attribs.x = crispAdjust;\n attribs.y = ((this.baseline ? -this.baselineOffset : 0) + crispAdjust);\n // Apply the box attributes\n attribs.width = Math.round(this.width);\n attribs.height = Math.round(this.height);\n this.box.attr(extend(attribs, this.deferredAttr));\n this.deferredAttr = {};\n }\n };\n /*\n * This function runs after setting text or padding, but only if padding\n * is changed.\n */\n SVGLabel.prototype.updateTextPadding = function () {\n var text = this.text;\n if (!text.textPath) {\n this.updateBoxSize();\n // Determine y based on the baseline\n var textY = this.baseline ? 0 : this.baselineOffset;\n var textX = pick(this.paddingLeft,\n this.padding);\n // compensate for alignment\n if (defined(this.widthSetting) &&\n this.bBox &&\n (this.textAlign === 'center' || this.textAlign === 'right')) {\n textX += { center: 0.5, right: 1 }[this.textAlign] * (this.widthSetting - this.bBox.width);\n }\n // update if anything changed\n if (textX !== text.x || textY !== text.y) {\n text.attr('x', textX);\n // #8159 - prevent misplaced data labels in treemap\n // (useHTML: true)\n if (text.hasBoxWidthChanged) {\n this.bBox = text.getBBox(true);\n }\n if (typeof textY !== 'undefined') {\n text.attr('y', textY);\n }\n }\n // record current values\n text.x = textX;\n text.y = textY;\n }\n };\n SVGLabel.prototype.widthSetter = function (value) {\n // width:auto => null\n this.widthSetting = isNumber(value) ? value : void 0;\n };\n SVGLabel.prototype.getPaddedWidth = function () {\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n var paddingRight = pick(this.paddingRight,\n padding);\n return ((this.widthSetting || this.bBox.width || 0) +\n paddingLeft +\n paddingRight);\n };\n SVGLabel.prototype.xSetter = function (value) {\n this.x = value; // for animation getter\n if (this.alignFactor) {\n value -= this.alignFactor * this.getPaddedWidth();\n // Force animation even when setting to the same value (#7898)\n this['forceAnimate:x'] = true;\n }\n this.xSetting = Math.round(value);\n this.attr('translateX', this.xSetting);\n };\n SVGLabel.prototype.ySetter = function (value) {\n this.ySetting = this.y = Math.round(value);\n this.attr('translateY', this.ySetting);\n };\n /* *\n *\n * Static Properties\n *\n * */\n SVGLabel.emptyBBox = {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n /**\n * For labels, these CSS properties are applied to the `text` node directly.\n *\n * @private\n * @name Highcharts.SVGLabel#textProps\n * @type {Array}\n */\n SVGLabel.textProps = [\n 'color', 'direction', 'fontFamily', 'fontSize', 'fontStyle',\n 'fontWeight', 'lineHeight', 'textAlign', 'textDecoration',\n 'textOutline', 'textOverflow', 'width'\n ];\n return SVGLabel;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return SVGLabel;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/Symbols.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n isNumber = U.isNumber,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable require-jsdoc, valid-jsdoc */\n function arc(x, y, w, h, options) {\n var arc = [];\n if (options) {\n var start = options.start || 0,\n rx = pick(options.r,\n w),\n ry = pick(options.r,\n h || w),\n proximity = 0.001,\n fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <\n proximity), \n // Substract a small number to prevent cos and sin of start\n // and end from becoming equal on 360 arcs (related: #1561)\n end = (options.end || 0) - proximity,\n innerRadius = options.innerR,\n open_1 = pick(options.open,\n fullCircle),\n cosStart = Math.cos(start),\n sinStart = Math.sin(start),\n cosEnd = Math.cos(end),\n sinEnd = Math.sin(end), \n // Proximity takes care of rounding errors around PI (#6971)\n longArc = pick(options.longArc,\n end - start - Math.PI < proximity ? 0 : 1);\n arc.push([\n 'M',\n x + rx * cosStart,\n y + ry * sinStart\n ], [\n 'A',\n rx,\n ry,\n 0,\n longArc,\n pick(options.clockwise, 1),\n x + rx * cosEnd,\n y + ry * sinEnd\n ]);\n if (defined(innerRadius)) {\n arc.push(open_1 ?\n [\n 'M',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ] : [\n 'L',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ], [\n 'A',\n innerRadius,\n innerRadius,\n 0,\n longArc,\n // Clockwise - opposite to the outer arc clockwise\n defined(options.clockwise) ? 1 - options.clockwise : 0,\n x + innerRadius * cosStart,\n y + innerRadius * sinStart\n ]);\n }\n if (!open_1) {\n arc.push(['Z']);\n }\n }\n return arc;\n }\n /**\n * Callout shape used for default tooltips, also used for rounded\n * rectangles in VML\n */\n function callout(x, y, w, h, options) {\n var arrowLength = 6,\n halfDistance = 6,\n r = Math.min((options && options.r) || 0,\n w,\n h),\n safeDistance = r + halfDistance,\n anchorX = options && options.anchorX,\n anchorY = options && options.anchorY || 0;\n var path = roundedRect(x,\n y,\n w,\n h, { r: r });\n if (!isNumber(anchorX)) {\n return path;\n }\n // Anchor on right side\n if (x + anchorX >= w) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(3, 1, ['L', x + w, anchorY - halfDistance], ['L', x + w + arrowLength, anchorY], ['L', x + w, anchorY + halfDistance], ['L', x + w, y + h - r]);\n // Simple connector\n }\n else {\n path.splice(3, 1, ['L', x + w, h / 2], ['L', anchorX, anchorY], ['L', x + w, h / 2], ['L', x + w, y + h - r]);\n }\n // Anchor on left side\n }\n else if (x + anchorX <= 0) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(7, 1, ['L', x, anchorY + halfDistance], ['L', x - arrowLength, anchorY], ['L', x, anchorY - halfDistance], ['L', x, y + r]);\n // Simple connector\n }\n else {\n path.splice(7, 1, ['L', x, h / 2], ['L', anchorX, anchorY], ['L', x, h / 2], ['L', x, y + r]);\n }\n }\n else if ( // replace bottom\n anchorY &&\n anchorY > h &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(5, 1, ['L', anchorX + halfDistance, y + h], ['L', anchorX, y + h + arrowLength], ['L', anchorX - halfDistance, y + h], ['L', x + r, y + h]);\n }\n else if ( // replace top\n anchorY &&\n anchorY < 0 &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(1, 1, ['L', anchorX - halfDistance, y], ['L', anchorX, y - arrowLength], ['L', anchorX + halfDistance, y], ['L', w - r, y]);\n }\n return path;\n }\n function circle(x, y, w, h) {\n // Return a full arc\n return arc(x + w / 2, y + h / 2, w / 2, h / 2, {\n start: Math.PI * 0.5,\n end: Math.PI * 2.5,\n open: false\n });\n }\n function diamond(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h / 2],\n ['L', x + w / 2, y + h],\n ['L', x, y + h / 2],\n ['Z']\n ];\n }\n // #15291\n function rect(x, y, w, h, options) {\n if (options && options.r) {\n return roundedRect(x, y, w, h, options);\n }\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function roundedRect(x, y, w, h, options) {\n var r = (options && options.r) || 0;\n return [\n ['M', x + r, y],\n ['L', x + w - r, y],\n ['C', x + w, y, x + w, y, x + w, y + r],\n ['L', x + w, y + h - r],\n ['C', x + w, y + h, x + w, y + h, x + w - r, y + h],\n ['L', x + r, y + h],\n ['C', x, y + h, x, y + h, x, y + h - r],\n ['L', x, y + r],\n ['C', x, y, x, y, x + r, y] // top-left corner\n ];\n }\n function triangle(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function triangleDown(x, y, w, h) {\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w / 2, y + h],\n ['Z']\n ];\n }\n var Symbols = {\n arc: arc,\n callout: callout,\n circle: circle,\n diamond: diamond,\n rect: rect,\n roundedRect: roundedRect,\n square: rect,\n triangle: triangle,\n 'triangle-down': triangleDown\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return Symbols;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/TextBuilder.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (AST, H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var doc = H.doc,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isString = U.isString,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG Text Builder\n * @private\n * @class\n * @name Highcharts.TextBuilder\n */\n var TextBuilder = /** @class */ (function () {\n function TextBuilder(svgElement) {\n var textStyles = svgElement.styles;\n this.renderer = svgElement.renderer;\n this.svgElement = svgElement;\n this.width = svgElement.textWidth;\n this.textLineHeight = textStyles && textStyles.lineHeight;\n this.textOutline = textStyles && textStyles.textOutline;\n this.ellipsis = Boolean(textStyles && textStyles.textOverflow === 'ellipsis');\n this.noWrap = Boolean(textStyles && textStyles.whiteSpace === 'nowrap');\n this.fontSize = textStyles && textStyles.fontSize;\n }\n /**\n * Build an SVG representation of the pseudo HTML given in the object's\n * svgElement.\n *\n * @private\n *\n * @return {void}.\n */\n TextBuilder.prototype.buildSVG = function () {\n var wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = pick(wrapper.textStr, '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = this.width && !wrapper.added && renderer.box, regexMatchBreaks = //g, \n // The buildText code is quite heavy, so if we're not changing\n // something that affects the text, skip it (#6113).\n textCache = [\n textStr,\n this.ellipsis,\n this.noWrap,\n this.textLineHeight,\n this.textOutline,\n this.fontSize,\n this.width\n ].join(',');\n if (textCache === wrapper.textCache) {\n return;\n }\n wrapper.textCache = textCache;\n delete wrapper.actualWidth;\n // Remove old text\n for (var i = childNodes.length; i--;) {\n textNode.removeChild(childNodes[i]);\n }\n // Simple strings, add text directly and return\n if (!hasMarkup &&\n !this.ellipsis &&\n !this.width &&\n !wrapper.textPath &&\n (textStr.indexOf(' ') === -1 ||\n (this.noWrap && !regexMatchBreaks.test(textStr)))) {\n textNode.appendChild(doc.createTextNode(this.unescapeEntities(textStr)));\n // Complex strings, add more logic\n }\n else if (textStr !== '') {\n if (tempParent) {\n // attach it to the DOM to read offset width\n tempParent.appendChild(textNode);\n }\n // Step 1. Parse the markup safely and directly into a tree\n // structure.\n var ast = new AST(textStr);\n // Step 2. Do as many as we can of the modifications to the tree\n // structure before it is added to the DOM\n this.modifyTree(ast.nodes);\n ast.addToDOM(textNode);\n // Step 3. Some modifications can't be done until the structure is\n // in the DOM, because we need to read computed metrics.\n this.modifyDOM();\n // Add title if an ellipsis was added\n if (this.ellipsis &&\n (textNode.textContent || '').indexOf('\\u2026') !== -1) {\n wrapper.attr('title', this.unescapeEntities(wrapper.textStr || '', ['<', '>']) // #7179\n );\n }\n if (tempParent) {\n tempParent.removeChild(textNode);\n }\n }\n // Apply the text outline\n if (isString(this.textOutline) && wrapper.applyTextOutline) {\n wrapper.applyTextOutline(this.textOutline);\n }\n };\n /**\n * Modify the DOM of the generated SVG structure. This function only does\n * operations that cannot be done until the elements are attached to the\n * DOM, like doing layout based on rendered metrics of the added elements.\n *\n * @private\n *\n */\n TextBuilder.prototype.modifyDOM = function () {\n var _this = this;\n var wrapper = this.svgElement;\n var x = attr(wrapper.element, 'x');\n wrapper.firstLineMetrics = void 0;\n // Remove empty tspans (including breaks) from the beginning because\n // SVG's getBBox doesn't count empty lines. The use case is tooltip\n // where the header is empty. By doing this in the DOM rather than in\n // the AST, we can inspect the textContent directly and don't have to\n // recurse down to look for valid content.\n var firstChild;\n while ((firstChild = wrapper.element.firstChild)) {\n if (/^[\\s\\u200B]*$/.test(firstChild.textContent || ' ')) {\n wrapper.element.removeChild(firstChild);\n }\n else {\n break;\n }\n }\n // Modify hard line breaks by applying the rendered line height\n [].forEach.call(wrapper.element.querySelectorAll('tspan.highcharts-br'), function (br, i) {\n if (br.nextSibling && br.previousSibling) { // #5261\n if (i === 0 && br.previousSibling.nodeType === 1) {\n wrapper.firstLineMetrics = wrapper.renderer\n .fontMetrics(void 0, br.previousSibling);\n }\n attr(br, {\n // Since the break is inserted in front of the next\n // line, we need to use the next sibling for the line\n // height\n dy: _this.getLineHeight(br.nextSibling),\n x: x\n });\n }\n });\n // Constrain the line width, either by ellipsis or wrapping\n var width = this.width || 0;\n if (!width) {\n return;\n }\n // Insert soft line breaks into each text node\n var modifyTextNode = function (textNode,\n parentElement) {\n var text = textNode.textContent || '';\n var words = text\n .replace(/([^\\^])-/g, '$1- ') // Split on hyphens\n // .trim()\n .split(' '); // #1273\n var hasWhiteSpace = !_this.noWrap && (words.length > 1 || wrapper.element.childNodes.length > 1);\n var dy = _this.getLineHeight(parentElement);\n var lineNo = 0;\n var startAt = wrapper.actualWidth;\n if (_this.ellipsis) {\n if (text) {\n _this.truncate(textNode, text, void 0, 0, \n // Target width\n Math.max(0, \n // Substract the font face to make room for the\n // ellipsis itself\n width - parseInt(_this.fontSize || 12, 10)), \n // Build the text to test for\n function (text, currentIndex) {\n return text.substring(0, currentIndex) + '\\u2026';\n });\n }\n }\n else if (hasWhiteSpace) {\n var lines = [];\n // Remove preceding siblings in order to make the text length\n // calculation correct in the truncate function\n var precedingSiblings = [];\n while (parentElement.firstChild &&\n parentElement.firstChild !== textNode) {\n precedingSiblings.push(parentElement.firstChild);\n parentElement.removeChild(parentElement.firstChild);\n }\n while (words.length) {\n // Apply the previous line\n if (words.length && !_this.noWrap && lineNo > 0) {\n lines.push(textNode.textContent || '');\n textNode.textContent = words.join(' ')\n .replace(/- /g, '-');\n }\n // For each line, truncate the remaining\n // words into the line length.\n _this.truncate(textNode, void 0, words, lineNo === 0 ? (startAt || 0) : 0, width, \n // Build the text to test for\n function (t, currentIndex) {\n return words\n .slice(0, currentIndex)\n .join(' ')\n .replace(/- /g, '-');\n });\n startAt = wrapper.actualWidth;\n lineNo++;\n }\n // Reinsert the preceding child nodes\n precedingSiblings.forEach(function (childNode) {\n parentElement.insertBefore(childNode, textNode);\n });\n // Insert the previous lines before the original text node\n lines.forEach(function (line) {\n // Insert the line\n parentElement.insertBefore(doc.createTextNode(line), textNode);\n // Insert a break\n var br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B'; // zero-width space\n attr(br, { dy: dy, x: x });\n parentElement.insertBefore(br, textNode);\n });\n }\n };\n // Recurse down the DOM tree and handle line breaks for each text node\n var modifyChildren = (function (node) {\n var childNodes = [].slice.call(node.childNodes);\n childNodes.forEach(function (childNode) {\n if (childNode.nodeType === win.Node.TEXT_NODE) {\n modifyTextNode(childNode, node);\n }\n else {\n // Reset word-wrap width readings after hard breaks\n if (childNode.className.baseVal\n .indexOf('highcharts-br') !== -1) {\n wrapper.actualWidth = 0;\n }\n // Recurse down to child node\n modifyChildren(childNode);\n }\n });\n });\n modifyChildren(wrapper.element);\n };\n /**\n * Get the rendered line height of a , or pure text node.\n *\n * @param {DOMElementType|Text} node The node to check for\n *\n * @return {number} The rendered line height\n */\n TextBuilder.prototype.getLineHeight = function (node) {\n var fontSizeStyle;\n // If the node is a text node, use its parent\n var element = (node.nodeType === win.Node.TEXT_NODE) ?\n node.parentElement :\n node;\n if (!this.renderer.styledMode) {\n fontSizeStyle =\n element && /(px|em)$/.test(element.style.fontSize) ?\n element.style.fontSize :\n (this.fontSize || this.renderer.style.fontSize || 12);\n }\n return this.textLineHeight ?\n parseInt(this.textLineHeight.toString(), 10) :\n this.renderer.fontMetrics(fontSizeStyle, element || this.svgElement.element).h;\n };\n /**\n * Transform a pseudo HTML AST node tree into an SVG structure. We do as\n * much heavy lifting as we can here, before doing the final processing in\n * the modifyDOM function. The original data is mutated.\n *\n * @private\n *\n * @param {ASTNode[]} nodes The AST nodes\n *\n */\n TextBuilder.prototype.modifyTree = function (nodes) {\n var _this = this;\n var modifyChild = function (node,\n i) {\n var _a = node.attributes,\n attributes = _a === void 0 ? {} : _a,\n children = node.children,\n _b = node.style,\n style = _b === void 0 ? {} : _b,\n tagName = node.tagName,\n styledMode = _this.renderer.styledMode;\n // Apply styling to text tags\n if (tagName === 'b' || tagName === 'strong') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-strong';\n }\n else {\n style.fontWeight = 'bold';\n }\n }\n else if (tagName === 'i' || tagName === 'em') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-emphasized';\n }\n else {\n style.fontStyle = 'italic';\n }\n }\n // Modify styling\n if (style && style.color) {\n style.fill = style.color;\n }\n // Handle breaks\n if (tagName === 'br') {\n attributes['class'] = 'highcharts-br'; // eslint-disable-line dot-notation\n node.textContent = '\\u200B'; // zero-width space\n // Trim whitespace off the beginning of new lines\n var nextNode = nodes[i + 1];\n if (nextNode && nextNode.textContent) {\n nextNode.textContent =\n nextNode.textContent.replace(/^ +/gm, '');\n }\n // If an anchor has direct text node children, the text is unable to\n // wrap because there is no `getSubStringLength` function on the\n // element. Therefore we need to wrap the child text node or nodes\n // in a tspan. #16173.\n }\n else if (tagName === 'a' &&\n children &&\n children.some(function (child) { return child.tagName === '#text'; })) {\n node.children = [{ children: children, tagName: 'tspan' }];\n }\n if (tagName !== '#text' && tagName !== 'a') {\n node.tagName = 'tspan';\n }\n extend(node, { attributes: attributes, style: style });\n // Recurse\n if (children) {\n children\n .filter(function (c) { return c.tagName !== '#text'; })\n .forEach(modifyChild);\n }\n };\n nodes.forEach(modifyChild);\n fireEvent(this.svgElement, 'afterModifyTree', { nodes: nodes });\n };\n /*\n * Truncate the text node contents to a given length. Used when the css\n * width is set. If the `textOverflow` is `ellipsis`, the text is truncated\n * character by character to the given length. If not, the text is\n * word-wrapped line by line.\n */\n TextBuilder.prototype.truncate = function (textNode, text, words, startAt, width, getString) {\n var svgElement = this.svgElement;\n var renderer = svgElement.renderer,\n rotation = svgElement.rotation;\n // Cache the lengths to avoid checking the same twice\n var lengths = [];\n // Word wrap cannot be truncated to shorter than one word, ellipsis\n // text can be completely blank.\n var minIndex = words ? 1 : 0;\n var maxIndex = (text || words || '').length;\n var currentIndex = maxIndex;\n var str;\n var actualWidth;\n var getSubStringLength = function (charEnd,\n concatenatedEnd) {\n // charEnd is used when finding the character-by-character\n // break for ellipsis, concatenatedEnd is used for word-by-word\n // break for word wrapping.\n var end = concatenatedEnd || charEnd;\n var parentNode = textNode.parentNode;\n if (parentNode && typeof lengths[end] === 'undefined') {\n // Modern browsers\n if (parentNode.getSubStringLength) {\n // Fails with DOM exception on unit-tests/legend/members\n // of unknown reason. Desired width is 0, text content\n // is \"5\" and end is 1.\n try {\n lengths[end] = startAt +\n parentNode.getSubStringLength(0, words ? end + 1 : end);\n }\n catch (e) {\n '';\n }\n // Legacy\n }\n else if (renderer.getSpanWidth) { // #9058 jsdom\n textNode.textContent = getString(text || words, charEnd);\n lengths[end] = startAt +\n renderer.getSpanWidth(svgElement, textNode);\n }\n }\n return lengths[end];\n };\n svgElement.rotation = 0; // discard rotation when computing box\n actualWidth = getSubStringLength(textNode.textContent.length);\n if (startAt + actualWidth > width) {\n // Do a binary search for the index where to truncate the text\n while (minIndex <= maxIndex) {\n currentIndex = Math.ceil((minIndex + maxIndex) / 2);\n // When checking words for word-wrap, we need to build the\n // string and measure the subStringLength at the concatenated\n // word length.\n if (words) {\n str = getString(words, currentIndex);\n }\n actualWidth = getSubStringLength(currentIndex, str && str.length - 1);\n if (minIndex === maxIndex) {\n // Complete\n minIndex = maxIndex + 1;\n }\n else if (actualWidth > width) {\n // Too large. Set max index to current.\n maxIndex = currentIndex - 1;\n }\n else {\n // Within width. Set min index to current.\n minIndex = currentIndex;\n }\n }\n // If max index was 0 it means the shortest possible text was also\n // too large. For ellipsis that means only the ellipsis, while for\n // word wrap it means the whole first word.\n if (maxIndex === 0) {\n // Remove ellipsis\n textNode.textContent = '';\n // If the new text length is one less than the original, we don't\n // need the ellipsis\n }\n else if (!(text && maxIndex === text.length - 1)) {\n textNode.textContent = str || getString(text || words, currentIndex);\n }\n }\n // When doing line wrapping, prepare for the next line by removing the\n // items from this line.\n if (words) {\n words.splice(0, currentIndex);\n }\n svgElement.actualWidth = actualWidth;\n svgElement.rotation = rotation; // Apply rotation again.\n };\n /*\n * Un-escape HTML entities based on the public `renderer.escapes` list\n *\n * @private\n *\n * @param {string} inputStr The string to unescape\n * @param {Array} [except] Exceptions\n *\n * @return {string} The processed string\n */\n TextBuilder.prototype.unescapeEntities = function (inputStr, except) {\n objectEach(this.renderer.escapes, function (value, key) {\n if (!except || except.indexOf(value) === -1) {\n inputStr = inputStr.toString().replace(new RegExp(value, 'g'), key);\n }\n });\n return inputStr;\n };\n return TextBuilder;\n }());\n\n return TextBuilder;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n deg2rad = H.deg2rad,\n doc = H.doc,\n isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n noop = H.noop,\n SVG_NS = H.SVG_NS,\n symbolSizes = H.symbolSizes,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n pInt = U.pInt,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Variables\n *\n * */\n var hasInternalReferenceBug;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Allows direct access to the Highcharts rendering layer in order to draw\n * primitive shapes like circles, rectangles, paths or text directly on a chart,\n * or independent from any chart. The SVGRenderer represents a wrapper object\n * for SVG in modern browsers. Through the VMLRenderer, part of the `oldie.js`\n * module, it also brings vector graphics to IE <= 8.\n *\n * An existing chart's renderer can be accessed through {@link Chart.renderer}.\n * The renderer can also be used completely decoupled from a chart.\n *\n * @sample highcharts/members/renderer-on-chart\n * Annotating a chart programmatically.\n * @sample highcharts/members/renderer-basic\n * Independent SVG drawing.\n *\n * @example\n * // Use directly without a chart object.\n * let renderer = new Highcharts.Renderer(parentNode, 600, 400);\n *\n * @class\n * @name Highcharts.SVGRenderer\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode.\n * If it does, it will avoid setting presentational attributes in\n * some cases, but not when set explicitly through `.attr` and `.css`\n * etc.\n */\n var SVGRenderer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function SVGRenderer(container, width, height, style, forExport, allowHTML, styledMode) {\n /* *\n *\n * Properties\n *\n * */\n this.alignedObjects = void 0;\n /**\n * The root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#box\n * @type {Highcharts.SVGDOMElement}\n */\n this.box = void 0;\n /**\n * The wrapper for the root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#boxWrapper\n * @type {Highcharts.SVGElement}\n */\n this.boxWrapper = void 0;\n this.cache = void 0;\n this.cacheKeys = void 0;\n this.chartIndex = void 0;\n /**\n * A pointer to the `defs` node of the root SVG.\n *\n * @name Highcharts.SVGRenderer#defs\n * @type {Highcharts.SVGElement}\n */\n this.defs = void 0;\n this.globalAnimation = void 0;\n this.gradients = void 0;\n this.height = void 0;\n this.imgCount = void 0;\n this.isSVG = void 0;\n this.style = void 0;\n /**\n * Page url used for internal references.\n *\n * @private\n * @name Highcharts.SVGRenderer#url\n * @type {string}\n */\n this.url = void 0;\n this.width = void 0;\n this.init(container, width, height, style, forExport, allowHTML, styledMode);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize the SVGRenderer. Overridable initializer function that takes\n * the same parameters as the constructor.\n *\n * @function Highcharts.SVGRenderer#init\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode. If it\n * does, it will avoid setting presentational attributes in some cases, but\n * not when set explicitly through `.attr` and `.css` etc.\n */\n SVGRenderer.prototype.init = function (container, width, height, style, forExport, allowHTML, styledMode) {\n var renderer = this,\n boxWrapper = renderer\n .createElement('svg')\n .attr({\n version: '1.1',\n 'class': 'highcharts-root'\n }),\n element = boxWrapper.element;\n if (!styledMode) {\n boxWrapper.css(this.getStyle(style));\n }\n container.appendChild(element);\n // Always use ltr on the container, otherwise text-anchor will be\n // flipped and text appear outside labels, buttons, tooltip etc (#3482)\n attr(container, 'dir', 'ltr');\n // For browsers other than IE, add the namespace attribute (#1978)\n if (container.innerHTML.indexOf('xmlns') === -1) {\n attr(element, 'xmlns', this.SVG_NS);\n }\n // object properties\n renderer.isSVG = true;\n this.box = element;\n this.boxWrapper = boxWrapper;\n renderer.alignedObjects = [];\n this.url = this.getReferenceURL();\n // Add description\n var desc = this.createElement('desc').add();\n desc.element.appendChild(doc.createTextNode('Created with Highcharts 10.3.3'));\n renderer.defs = this.createElement('defs').add();\n renderer.allowHTML = allowHTML;\n renderer.forExport = forExport;\n renderer.styledMode = styledMode;\n renderer.gradients = {}; // Object where gradient SvgElements are stored\n renderer.cache = {}; // Cache for numerical bounding boxes\n renderer.cacheKeys = [];\n renderer.imgCount = 0;\n renderer.setSize(width, height, false);\n // Issue 110 workaround:\n // In Firefox, if a div is positioned by percentage, its pixel position\n // may land between pixels. The container itself doesn't display this,\n // but an SVG element inside this container will be drawn at subpixel\n // precision. In order to draw sharp lines, this must be compensated\n // for. This doesn't seem to work inside iframes though (like in\n // jsFiddle).\n var subPixelFix,\n rect;\n if (isFirefox && container.getBoundingClientRect) {\n subPixelFix = function () {\n css(container, { left: 0, top: 0 });\n rect = container.getBoundingClientRect();\n css(container, {\n left: (Math.ceil(rect.left) - rect.left) + 'px',\n top: (Math.ceil(rect.top) - rect.top) + 'px'\n });\n };\n // run the fix now\n subPixelFix();\n // run it on resize\n renderer.unSubPixelFix = addEvent(win, 'resize', subPixelFix);\n }\n };\n /**\n * General method for adding a definition to the SVG `defs` tag. Can be used\n * for gradients, fills, filters etc. Styled mode only. A hook for adding\n * general definitions to the SVG's defs tag. Definitions can be referenced\n * from the CSS by its `id`. Read more in\n * [gradients, shadows and patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n * Styled mode only.\n *\n * @function Highcharts.SVGRenderer#definition\n *\n * @param {Highcharts.ASTNode} def\n * A serialized form of an SVG definition, including children.\n *\n * @return {Highcharts.SVGElement}\n * The inserted node.\n */\n SVGRenderer.prototype.definition = function (def) {\n var ast = new AST([def]);\n return ast.addToDOM(this.defs.element);\n };\n /**\n * Get the prefix needed for internal URL references to work in certain\n * cases. Some older browser versions had a bug where internal url\n * references in SVG attributes, on the form `url(#some-id)`, would fail if\n * a base tag was present in the page. There were also issues with\n * `history.pushState` related to this prefix.\n *\n * Related issues: #24, #672, #1070, #5244.\n *\n * The affected browsers are:\n * - Chrome <= 53 (May 2018)\n * - Firefox <= 51 (January 2017)\n * - Safari/Mac <= 12.1 (2018 or 2019)\n * - Safari/iOS <= 13\n *\n * @todo Remove this hack when time has passed. All the affected browsers\n * are evergreens, so it is increasingly unlikely that users are affected by\n * the bug.\n *\n * @return {string}\n * The prefix to use. An empty string for modern browsers.\n */\n SVGRenderer.prototype.getReferenceURL = function () {\n if ((isFirefox || isWebKit) &&\n doc.getElementsByTagName('base').length) {\n // Detect if a clip path is taking effect by performing a hit test\n // outside the clipped area. If the hit element is the rectangle\n // that was supposed to be clipped, the bug is present. This only\n // has to be performed once per page load, so we store the result\n // locally in the module.\n if (!defined(hasInternalReferenceBug)) {\n var id = uniqueKey();\n var ast = new AST([{\n tagName: 'svg',\n attributes: {\n width: 8,\n height: 8\n },\n children: [{\n tagName: 'defs',\n children: [{\n tagName: 'clipPath',\n attributes: {\n id: id\n },\n children: [{\n tagName: 'rect',\n attributes: {\n width: 4,\n height: 4\n }\n }]\n }]\n }, {\n tagName: 'rect',\n attributes: {\n id: 'hitme',\n width: 8,\n height: 8,\n 'clip-path': \"url(#\".concat(id, \")\"),\n fill: 'rgba(0,0,0,0.001)'\n }\n }]\n }]);\n var svg = ast.addToDOM(doc.body);\n css(svg, {\n position: 'fixed',\n top: 0,\n left: 0,\n zIndex: 9e5\n });\n var hitElement = doc.elementFromPoint(6, 6);\n hasInternalReferenceBug = (hitElement && hitElement.id) === 'hitme';\n doc.body.removeChild(svg);\n }\n if (hasInternalReferenceBug) {\n return win.location.href\n .split('#')[0] // remove the hash\n .replace(/<[^>]*>/g, '') // wing cut HTML\n // escape parantheses and quotes\n .replace(/([\\('\\)])/g, '\\\\$1')\n // replace spaces (needed for Safari only)\n .replace(/ /g, '%20');\n }\n }\n return '';\n };\n /**\n * Get the global style setting for the renderer.\n *\n * @private\n * @function Highcharts.SVGRenderer#getStyle\n *\n * @param {Highcharts.CSSObject} style\n * Style settings.\n *\n * @return {Highcharts.CSSObject}\n * The style settings mixed with defaults.\n */\n SVGRenderer.prototype.getStyle = function (style) {\n this.style = extend({\n fontFamily: '\"Lucida Grande\", \"Lucida Sans Unicode\", ' +\n 'Arial, Helvetica, sans-serif',\n fontSize: '12px'\n }, style);\n return this.style;\n };\n /**\n * Apply the global style on the renderer, mixed with the default styles.\n *\n * @function Highcharts.SVGRenderer#setStyle\n *\n * @param {Highcharts.CSSObject} style\n * CSS to apply.\n */\n SVGRenderer.prototype.setStyle = function (style) {\n this.boxWrapper.css(this.getStyle(style));\n };\n /**\n * Detect whether the renderer is hidden. This happens when one of the\n * parent elements has `display: none`. Used internally to detect when we\n * needto render preliminarily in another div to get the text bounding boxes\n * right.\n *\n * @function Highcharts.SVGRenderer#isHidden\n *\n * @return {boolean}\n * True if it is hidden.\n */\n SVGRenderer.prototype.isHidden = function () {\n return !this.boxWrapper.getBBox().width;\n };\n /**\n * Destroys the renderer and its allocated members.\n *\n * @function Highcharts.SVGRenderer#destroy\n *\n * @return {null}\n * Pass through value.\n */\n SVGRenderer.prototype.destroy = function () {\n var renderer = this,\n rendererDefs = renderer.defs;\n renderer.box = null;\n renderer.boxWrapper = renderer.boxWrapper.destroy();\n // Call destroy on all gradient elements\n destroyObjectProperties(renderer.gradients || {});\n renderer.gradients = null;\n // Defs are null in VMLRenderer\n // Otherwise, destroy them here.\n if (rendererDefs) {\n renderer.defs = rendererDefs.destroy();\n }\n // Remove sub pixel fix handler (#982)\n if (renderer.unSubPixelFix) {\n renderer.unSubPixelFix();\n }\n renderer.alignedObjects = null;\n return null;\n };\n /**\n * Create a wrapper for an SVG element. Serves as a factory for\n * {@link SVGElement}, but this function is itself mostly called from\n * primitive factories like {@link SVGRenderer#path}, {@link\n * SVGRenderer#rect} or {@link SVGRenderer#text}.\n *\n * @function Highcharts.SVGRenderer#createElement\n *\n * @param {string} nodeName\n * The node name, for example `rect`, `g` etc.\n *\n * @return {Highcharts.SVGElement}\n * The generated SVGElement.\n */\n SVGRenderer.prototype.createElement = function (nodeName) {\n var wrapper = new this.Element();\n wrapper.init(this, nodeName);\n return wrapper;\n };\n /**\n * Get converted radial gradient attributes according to the radial\n * reference. Used internally from the {@link SVGElement#colorGradient}\n * function.\n *\n * @private\n * @function Highcharts.SVGRenderer#getRadialAttr\n */\n SVGRenderer.prototype.getRadialAttr = function (radialReference, gradAttr) {\n return {\n cx: (radialReference[0] - radialReference[2] / 2) +\n (gradAttr.cx || 0) * radialReference[2],\n cy: (radialReference[1] - radialReference[2] / 2) +\n (gradAttr.cy || 0) * radialReference[2],\n r: (gradAttr.r || 0) * radialReference[2]\n };\n };\n /**\n * Parse a simple HTML string into SVG tspans. Called internally when text\n * is set on an SVGElement. The function supports a subset of HTML tags, CSS\n * text features like `width`, `text-overflow`, `white-space`, and also\n * attributes like `href` and `style`.\n *\n * @private\n * @function Highcharts.SVGRenderer#buildText\n *\n * @param {Highcharts.SVGElement} wrapper\n * The parent SVGElement.\n */\n SVGRenderer.prototype.buildText = function (wrapper) {\n new TextBuilder(wrapper).buildSVG();\n };\n /**\n * Returns white for dark colors and black for bright colors, based on W3C's\n * definition of [Relative luminance](\n * https://www.w3.org/WAI/GL/wiki/Relative_luminance).\n *\n * @function Highcharts.SVGRenderer#getContrast\n *\n * @param {Highcharts.ColorString} color\n * The color to get the contrast for.\n *\n * @return {Highcharts.ColorString}\n * The contrast color, either `#000000` or `#FFFFFF`.\n */\n SVGRenderer.prototype.getContrast = function (color) {\n // #6216, #17273\n var rgba = Color.parse(color).rgba\n .map(function (b8) {\n var c = b8 / 255;\n return c <= 0.03928 ?\n c / 12.92 :\n Math.pow((c + 0.055) / 1.055, 2.4);\n });\n // Relative luminance\n var l = 0.2126 * rgba[0] + 0.7152 * rgba[1] + 0.0722 * rgba[2];\n // Use white or black based on which provides more contrast\n return 1.05 / (l + 0.05) > (l + 0.05) / 0.05 ? '#FFFFFF' : '#000000';\n };\n /**\n * Create a button with preset states.\n *\n * @function Highcharts.SVGRenderer#button\n *\n * @param {string} text\n * The text or HTML to draw.\n *\n * @param {number} x\n * The x position of the button's left side.\n *\n * @param {number} y\n * The y position of the button's top side.\n *\n * @param {Highcharts.EventCallbackFunction} callback\n * The function to execute on button click or touch.\n *\n * @param {Highcharts.SVGAttributes} [theme]\n * SVG attributes for the normal state.\n *\n * @param {Highcharts.SVGAttributes} [hoverState]\n * SVG attributes for the hover state.\n *\n * @param {Highcharts.SVGAttributes} [selectState]\n * SVG attributes for the pressed state.\n *\n * @param {Highcharts.SVGAttributes} [disabledState]\n * SVG attributes for the disabled state.\n *\n * @param {Highcharts.SymbolKeyValue} [shape=rect]\n * The shape type.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @return {Highcharts.SVGElement}\n * The button element.\n */\n SVGRenderer.prototype.button = function (text, x, y, callback, theme, hoverState, selectState, disabledState, shape, useHTML) {\n if (theme === void 0) { theme = {}; }\n var label = this.label(text,\n x,\n y,\n shape,\n void 0,\n void 0,\n useHTML,\n void 0, 'button'),\n styledMode = this.styledMode,\n states = theme.states || {};\n var curState = 0;\n theme = merge(theme);\n delete theme.states;\n var normalStyle = merge({\n color: \"#333333\" /* Palette.neutralColor80 */,\n cursor: 'pointer',\n fontWeight: 'normal'\n },\n theme.style);\n delete theme.style;\n // Remove stylable attributes. Pass in the ButtonThemeObject and get the\n // SVGAttributes subset back.\n var normalState = AST.filterUserAttributes(theme);\n // Default, non-stylable attributes\n label.attr(merge({ padding: 8, r: 2 }, normalState));\n // Presentational. The string type is a mistake, it is just for\n // compliance with SVGAttribute and is not used in button theme.\n var hoverStyle,\n selectStyle,\n disabledStyle;\n if (!styledMode) {\n // Normal state - prepare the attributes\n normalState = merge({\n fill: \"#f7f7f7\" /* Palette.neutralColor3 */,\n stroke: \"#cccccc\" /* Palette.neutralColor20 */,\n 'stroke-width': 1\n }, normalState);\n // Hover state\n hoverState = merge(normalState, {\n fill: \"#e6e6e6\" /* Palette.neutralColor10 */\n }, AST.filterUserAttributes(hoverState || states.hover || {}));\n hoverStyle = hoverState.style;\n delete hoverState.style;\n // Pressed state\n selectState = merge(normalState, {\n fill: \"#e6ebf5\" /* Palette.highlightColor10 */,\n style: {\n color: \"#000000\" /* Palette.neutralColor100 */,\n fontWeight: 'bold'\n }\n }, AST.filterUserAttributes(selectState || states.select || {}));\n selectStyle = selectState.style;\n delete selectState.style;\n // Disabled state\n disabledState = merge(normalState, {\n style: {\n color: \"#cccccc\" /* Palette.neutralColor20 */\n }\n }, AST.filterUserAttributes(disabledState || states.disabled || {}));\n disabledStyle = disabledState.style;\n delete disabledState.style;\n }\n // Add the events. IE9 and IE10 need mouseover and mouseout to function\n // (#667).\n addEvent(label.element, isMS ? 'mouseover' : 'mouseenter', function () {\n if (curState !== 3) {\n label.setState(1);\n }\n });\n addEvent(label.element, isMS ? 'mouseout' : 'mouseleave', function () {\n if (curState !== 3) {\n label.setState(curState);\n }\n });\n label.setState = function (state) {\n // Hover state is temporary, don't record it\n if (state !== 1) {\n label.state = curState = state;\n }\n // Update visuals\n label\n .removeClass(/highcharts-button-(normal|hover|pressed|disabled)/)\n .addClass('highcharts-button-' +\n ['normal', 'hover', 'pressed', 'disabled'][state || 0]);\n if (!styledMode) {\n label\n .attr([\n normalState,\n hoverState,\n selectState,\n disabledState\n ][state || 0]);\n var css_1 = [\n normalStyle,\n hoverStyle,\n selectStyle,\n disabledStyle\n ][state || 0];\n if (isObject(css_1)) {\n label.css(css_1);\n }\n }\n };\n // Presentational attributes\n if (!styledMode) {\n label\n .attr(normalState)\n .css(extend({ cursor: 'default' }, normalStyle));\n // HTML labels don't need to handle pointer events because click and\n // mouseenter/mouseleave is bound to the underlying element.\n // Should this be reconsidered, we need more complex logic to share\n // events between the and its
counterpart, and avoid\n // triggering mouseenter/mouseleave when hovering from one to the\n // other (#17440).\n if (useHTML) {\n label.text.css({ pointerEvents: 'none' });\n }\n }\n return label\n .on('touchstart', function (e) { return e.stopPropagation(); })\n .on('click', function (e) {\n if (curState !== 3) {\n callback.call(label, e);\n }\n });\n };\n /**\n * Make a straight line crisper by not spilling out to neighbour pixels.\n *\n * @function Highcharts.SVGRenderer#crispLine\n *\n * @param {Highcharts.SVGPathArray} points\n * The original points on the format `[['M', 0, 0], ['L', 100, 0]]`.\n *\n * @param {number} width\n * The width of the line.\n *\n * @param {string} [roundingFunction=round]\n * The rounding function name on the `Math` object, can be one of\n * `round`, `floor` or `ceil`.\n *\n * @return {Highcharts.SVGPathArray}\n * The original points array, but modified to render crisply.\n */\n SVGRenderer.prototype.crispLine = function (points, width, roundingFunction) {\n if (roundingFunction === void 0) { roundingFunction = 'round'; }\n var start = points[0];\n var end = points[1];\n // Normalize to a crisp line\n if (defined(start[1]) && start[1] === end[1]) {\n // Substract due to #1129. Now bottom and left axis gridlines behave\n // the same.\n start[1] = end[1] =\n Math[roundingFunction](start[1]) - (width % 2 / 2);\n }\n if (defined(start[2]) && start[2] === end[2]) {\n start[2] = end[2] =\n Math[roundingFunction](start[2]) + (width % 2 / 2);\n }\n return points;\n };\n /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @sample highcharts/members/renderer-path-on-chart/\n * Draw a path in a chart\n * @sample highcharts/members/renderer-path/\n * Draw a path independent from a chart\n *\n * @example\n * let path = renderer.path(['M', 10, 10, 'L', 30, 30, 'z'])\n * .attr({ stroke: '#ff00ff' })\n * .add();\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGPathArray} [path]\n * An SVG path definition in array form.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n *\n */ /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.path = function (path) {\n var attribs = (this.styledMode ? {} : {\n fill: 'none'\n });\n if (isArray(path)) {\n attribs.d = path;\n }\n else if (isObject(path)) { // attributes\n extend(attribs, path);\n }\n return this.createElement('path').attr(attribs);\n };\n /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @sample highcharts/members/renderer-circle/\n * Drawing a circle\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {number} [x]\n * The center x position.\n *\n * @param {number} [y]\n * The center y position.\n *\n * @param {number} [r]\n * The radius.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.circle = function (x, y, r) {\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ? {} : { x: x, y: y, r: r }), wrapper = this.createElement('circle');\n // Setting x or y translates to cx and cy\n wrapper.xSetter = wrapper.ySetter = function (value, key, element) {\n element.setAttribute('c' + key, value);\n };\n return wrapper.attr(attribs);\n };\n /**\n * Draw and return an arc.\n *\n * @sample highcharts/members/renderer-arc/\n * Drawing an arc\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {number} [x=0]\n * Center X position.\n *\n * @param {number} [y=0]\n * Center Y position.\n *\n * @param {number} [r=0]\n * The outer radius' of the arc.\n *\n * @param {number} [innerR=0]\n * Inner radius like used in donut charts.\n *\n * @param {number} [start=0]\n * The starting angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @param {number} [end=0]\n * The ending angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return an arc. Overloaded function that takes arguments object.\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {Highcharts.SVGAttributes} attribs\n * Initial SVG attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.arc = function (x, y, r, innerR, start, end) {\n var options;\n if (isObject(x)) {\n options = x;\n y = options.y;\n r = options.r;\n innerR = options.innerR;\n start = options.start;\n end = options.end;\n x = options.x;\n }\n else {\n options = { innerR: innerR, start: start, end: end };\n }\n // Arcs are defined as symbols for the ability to set\n // attributes in attr and animate\n var arc = this.symbol('arc',\n x,\n y,\n r,\n r,\n options);\n arc.r = r; // #959\n return arc;\n };\n /**\n * Draw and return a rectangle.\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {number} [x]\n * Left position.\n *\n * @param {number} [y]\n * Top position.\n *\n * @param {number} [width]\n * Width of the rectangle.\n *\n * @param {number} [height]\n * Height of the rectangle.\n *\n * @param {number} [r]\n * Border corner radius.\n *\n * @param {number} [strokeWidth]\n * A stroke width can be supplied to allow crisp drawing.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return a rectangle.\n *\n * @sample highcharts/members/renderer-rect-on-chart/\n * Draw a rectangle in a chart\n * @sample highcharts/members/renderer-rect/\n * Draw a rectangle independent from a chart\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {Highcharts.SVGAttributes} [attributes]\n * General SVG attributes for the rectangle.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.rect = function (x, y, width, height, r, strokeWidth) {\n r = isObject(x) ? x.r : r;\n var wrapper = this.createElement('rect');\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ?\n {} :\n {\n x: x,\n y: y,\n width: Math.max(width, 0),\n height: Math.max(height, 0)\n });\n if (!this.styledMode) {\n if (typeof strokeWidth !== 'undefined') {\n attribs['stroke-width'] = strokeWidth;\n attribs = wrapper.crisp(attribs);\n }\n attribs.fill = 'none';\n }\n if (r) {\n attribs.r = r;\n }\n wrapper.rSetter = function (value, _key, element) {\n wrapper.r = value;\n attr(element, {\n rx: value,\n ry: value\n });\n };\n wrapper.rGetter = function () {\n return wrapper.r || 0;\n };\n return wrapper.attr(attribs);\n };\n /**\n * Resize the {@link SVGRenderer#box} and re-align all aligned child\n * elements.\n *\n * @sample highcharts/members/renderer-g/\n * Show and hide grouped objects\n *\n * @function Highcharts.SVGRenderer#setSize\n *\n * @param {number} width\n * The new pixel width.\n *\n * @param {number} height\n * The new pixel height.\n *\n * @param {boolean|Partial} [animate=true]\n * Whether and how to animate.\n */\n SVGRenderer.prototype.setSize = function (width, height, animate) {\n var renderer = this;\n renderer.width = width;\n renderer.height = height;\n renderer.boxWrapper.animate({\n width: width,\n height: height\n }, {\n step: function () {\n this.attr({\n viewBox: '0 0 ' + this.attr('width') + ' ' +\n this.attr('height')\n });\n },\n duration: pick(animate, true) ? void 0 : 0\n });\n renderer.alignElements();\n };\n /**\n * Create and return an svg group element. Child\n * {@link Highcharts.SVGElement} objects are added to the group by using the\n * group as the first parameter in {@link Highcharts.SVGElement#add|add()}.\n *\n * @function Highcharts.SVGRenderer#g\n *\n * @param {string} [name]\n * The group will be given a class name of `highcharts-{name}`. This\n * can be used for styling and scripting.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.g = function (name) {\n var elem = this.createElement('g');\n return name ?\n elem.attr({ 'class': 'highcharts-' + name }) :\n elem;\n };\n /**\n * Display an image.\n *\n * @sample highcharts/members/renderer-image-on-chart/\n * Add an image in a chart\n * @sample highcharts/members/renderer-image/\n * Add an image independent of a chart\n *\n * @function Highcharts.SVGRenderer#image\n *\n * @param {string} src\n * The image source.\n *\n * @param {number} [x]\n * The X position.\n *\n * @param {number} [y]\n * The Y position.\n *\n * @param {number} [width]\n * The image width. If omitted, it defaults to the image file width.\n *\n * @param {number} [height]\n * The image height. If omitted it defaults to the image file\n * height.\n *\n * @param {Function} [onload]\n * Event handler for image load.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.image = function (src, x, y, width, height, onload) {\n var attribs = { preserveAspectRatio: 'none' }, setSVGImageSource = function (el, src) {\n // Set the href in the xlink namespace\n if (el.setAttributeNS) {\n el.setAttributeNS('http://www.w3.org/1999/xlink', 'href', src);\n }\n else {\n // could be exporting in IE\n // using href throws \"not supported\" in ie7 and under,\n // requries regex shim to fix later\n el.setAttribute('hc-svg-href', src);\n }\n };\n // Optional properties (#11756)\n if (isNumber(x)) {\n attribs.x = x;\n }\n if (isNumber(y)) {\n attribs.y = y;\n }\n if (isNumber(width)) {\n attribs.width = width;\n }\n if (isNumber(height)) {\n attribs.height = height;\n }\n var elemWrapper = this.createElement('image').attr(attribs),\n onDummyLoad = function (e) {\n setSVGImageSource(elemWrapper.element,\n src);\n onload.call(elemWrapper, e);\n };\n // Add load event if supplied\n if (onload) {\n // We have to use a dummy HTML image since IE support for SVG image\n // load events is very buggy. First set a transparent src, wait for\n // dummy to load, and then add the real src to the SVG image.\n setSVGImageSource(elemWrapper.element, 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* eslint-disable-line */);\n var dummy = new win.Image();\n addEvent(dummy, 'load', onDummyLoad);\n dummy.src = src;\n if (dummy.complete) {\n onDummyLoad({});\n }\n }\n else {\n setSVGImageSource(elemWrapper.element, src);\n }\n return elemWrapper;\n };\n /**\n * Draw a symbol out of pre-defined shape paths from\n * {@link SVGRenderer#symbols}.\n * It is used in Highcharts for point makers, which cake a `symbol` option,\n * and label and button backgrounds like in the tooltip and stock flags.\n *\n * @function Highcharts.SVGRenderer#symbol\n *\n * @param {string} symbol\n * The symbol name.\n *\n * @param {number} [x]\n * The X coordinate for the top left position.\n *\n * @param {number} [y]\n * The Y coordinate for the top left position.\n *\n * @param {number} [width]\n * The pixel width.\n *\n * @param {number} [height]\n * The pixel height.\n *\n * @param {Highcharts.SymbolOptionsObject} [options]\n * Additional options, depending on the actual symbol drawn.\n *\n * @return {Highcharts.SVGElement}\n * SVG symbol.\n */\n SVGRenderer.prototype.symbol = function (symbol, x, y, width, height, options) {\n var ren = this,\n imageRegex = /^url\\((.*?)\\)$/,\n isImage = imageRegex.test(symbol),\n sym = (!isImage && (this.symbols[symbol] ? symbol : 'circle')), \n // get the symbol definition function\n symbolFn = (sym && this.symbols[sym]);\n var obj,\n path,\n imageSrc,\n centerImage;\n if (symbolFn) {\n // Check if there's a path defined for this symbol\n if (typeof x === 'number') {\n path = symbolFn.call(this.symbols, Math.round(x || 0), Math.round(y || 0), width || 0, height || 0, options);\n }\n obj = this.path(path);\n if (!ren.styledMode) {\n obj.attr('fill', 'none');\n }\n // expando properties for use in animate and attr\n extend(obj, {\n symbolName: (sym || void 0),\n x: x,\n y: y,\n width: width,\n height: height\n });\n if (options) {\n extend(obj, options);\n }\n // Image symbols\n }\n else if (isImage) {\n imageSrc = symbol.match(imageRegex)[1];\n // Create the image synchronously, add attribs async\n var img_1 = obj = this.image(imageSrc);\n // The image width is not always the same as the symbol width. The\n // image may be centered within the symbol, as is the case when\n // image shapes are used as label backgrounds, for example in flags.\n img_1.imgwidth = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].width, options && options.width);\n img_1.imgheight = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].height, options && options.height);\n /**\n * Set the size and position\n */\n centerImage = function (obj) { return obj.attr({\n width: obj.width,\n height: obj.height\n }); };\n /**\n * Width and height setters that take both the image's physical size\n * and the label size into consideration, and translates the image\n * to center within the label.\n */\n ['width', 'height'].forEach(function (key) {\n img_1[key + 'Setter'] = function (value, key) {\n this[key] = value;\n var _a = this,\n alignByTranslate = _a.alignByTranslate,\n element = _a.element,\n width = _a.width,\n height = _a.height,\n imgwidth = _a.imgwidth,\n imgheight = _a.imgheight;\n var imgSize = this['img' + key];\n if (defined(imgSize)) {\n var scale = 1;\n // Scale and center the image within its container.\n // The name `backgroundSize` is taken from the CSS spec,\n // but the value `within` is made up. Other possible\n // values in the spec, `cover` and `contain`, can be\n // implemented if needed.\n if (options &&\n options.backgroundSize === 'within' &&\n width &&\n height) {\n scale = Math.min(width / imgwidth, height / imgheight);\n imgSize = Math.round(imgSize * scale);\n // Update both width and height to keep the ratio\n // correct (#17315)\n attr(element, {\n width: Math.round(imgwidth * scale),\n height: Math.round(imgheight * scale)\n });\n }\n else if (element) {\n element.setAttribute(key, imgSize);\n }\n if (!alignByTranslate) {\n this.translate(((width || 0) - (imgSize * scale)) / 2, ((height || 0) - (imgSize * scale)) / 2);\n }\n }\n };\n });\n if (defined(x)) {\n img_1.attr({\n x: x,\n y: y\n });\n }\n img_1.isImg = true;\n if (defined(img_1.imgwidth) && defined(img_1.imgheight)) {\n centerImage(img_1);\n }\n else {\n // Initialize image to be 0 size so export will still function\n // if there's no cached sizes.\n img_1.attr({ width: 0, height: 0 });\n // Create a dummy JavaScript image to get the width and height.\n createElement('img', {\n onload: function () {\n var chart = charts[ren.chartIndex];\n // Special case for SVGs on IE11, the width is not\n // accessible until the image is part of the DOM\n // (#2854).\n if (this.width === 0) {\n css(this, {\n position: 'absolute',\n top: '-999em'\n });\n doc.body.appendChild(this);\n }\n // Center the image\n symbolSizes[imageSrc] = {\n width: this.width,\n height: this.height\n };\n img_1.imgwidth = this.width;\n img_1.imgheight = this.height;\n if (img_1.element) {\n centerImage(img_1);\n }\n // Clean up after #2854 workaround.\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n // Fire the load event when all external images are\n // loaded\n ren.imgCount--;\n if (!ren.imgCount && chart && !chart.hasLoaded) {\n chart.onload();\n }\n },\n src: imageSrc\n });\n this.imgCount++;\n }\n }\n return obj;\n };\n /**\n * Define a clipping rectangle. The clipping rectangle is later applied\n * to {@link SVGElement} objects through the {@link SVGElement#clip}\n * function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @function Highcharts.SVGRenderer#clipRect\n *\n * @param {number} [x]\n *\n * @param {number} [y]\n *\n * @param {number} [width]\n *\n * @param {number} [height]\n *\n * @return {Highcharts.ClipRectElement}\n * A clipping rectangle.\n */\n SVGRenderer.prototype.clipRect = function (x, y, width, height) {\n var \n // Add a hyphen at the end to avoid confusion in testing indexes\n // -1 and -10, -11 etc (#6550)\n id = uniqueKey() + '-', clipPath = this.createElement('clipPath').attr({\n id: id\n }).add(this.defs), wrapper = this.rect(x, y, width, height, 0).add(clipPath);\n wrapper.id = id;\n wrapper.clipPath = clipPath;\n wrapper.count = 0;\n return wrapper;\n };\n /**\n * Draw text. The text can contain a subset of HTML, like spans and anchors\n * and some basic text styling of these. For more advanced features like\n * border and background, use {@link Highcharts.SVGRenderer#label} instead.\n * To update the text after render, run `text.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Annotate the chart freely\n * @sample highcharts/members/renderer-on-chart/\n * Annotate with a border and in response to the data\n * @sample highcharts/members/renderer-text/\n * Formatted text\n *\n * @function Highcharts.SVGRenderer#text\n *\n * @param {string} [str]\n * The text of (subset) HTML to draw.\n *\n * @param {number} [x]\n * The x position of the text's lower left corner.\n *\n * @param {number} [y]\n * The y position of the text's lower left corner.\n *\n * @param {boolean} [useHTML=false]\n * Use HTML to render the text.\n *\n * @return {Highcharts.SVGElement}\n * The text object.\n */\n SVGRenderer.prototype.text = function (str, x, y, useHTML) {\n var renderer = this,\n attribs = {};\n if (useHTML && (renderer.allowHTML || !renderer.forExport)) {\n return renderer.html(str, x, y);\n }\n attribs.x = Math.round(x || 0); // X always needed for line-wrap logic\n if (y) {\n attribs.y = Math.round(y);\n }\n if (defined(str)) {\n attribs.text = str;\n }\n var wrapper = renderer.createElement('text').attr(attribs);\n if (!useHTML || (renderer.forExport && !renderer.allowHTML)) {\n wrapper.xSetter = function (value, key, element) {\n var tspans = element.getElementsByTagName('tspan'),\n parentVal = element.getAttribute(key);\n for (var i = 0, tspan = void 0; i < tspans.length; i++) {\n tspan = tspans[i];\n // If the x values are equal, the tspan represents a line\n // break\n if (tspan.getAttribute(key) === parentVal) {\n tspan.setAttribute(key, value);\n }\n }\n element.setAttribute(key, value);\n };\n }\n return wrapper;\n };\n /**\n * Utility to return the baseline offset and total line height from the font\n * size.\n *\n * @function Highcharts.SVGRenderer#fontMetrics\n *\n * @param {number|string} [fontSize]\n * The current font size to inspect. If not given, the font size\n * will be found from the DOM element.\n *\n * @param {Highcharts.SVGElement|Highcharts.SVGDOMElement} [elem]\n * The element to inspect for a current font size.\n *\n * @return {Highcharts.FontMetricsObject}\n * The font metrics.\n */\n SVGRenderer.prototype.fontMetrics = function (fontSize, elem) {\n if ((this.styledMode || !/px/.test(fontSize)) &&\n (win.getComputedStyle) // old IE doesn't support it\n ) {\n fontSize = elem && SVGElement.prototype.getStyle.call(elem, 'font-size');\n }\n else {\n fontSize = fontSize ||\n // When the elem is a DOM element (#5932)\n (elem && elem.style && elem.style.fontSize) ||\n // Fall back on the renderer style default\n (this.style && this.style.fontSize);\n }\n // Handle different units\n if (/px/.test(fontSize)) {\n fontSize = pInt(fontSize);\n }\n else {\n fontSize = 12;\n }\n // Empirical values found by comparing font size and bounding box\n // height. Applies to the default font family.\n // https://jsfiddle.net/highcharts/7xvn7/\n var lineHeight = (fontSize < 24 ?\n fontSize + 3 :\n Math.round(fontSize * 1.2)),\n baseline = Math.round(lineHeight * 0.8);\n return {\n h: lineHeight,\n b: baseline,\n f: fontSize\n };\n };\n /**\n * Correct X and Y positioning of a label for rotation (#1764).\n *\n * @private\n * @function Highcharts.SVGRenderer#rotCorr\n */\n SVGRenderer.prototype.rotCorr = function (baseline, rotation, alterY) {\n var y = baseline;\n if (rotation && alterY) {\n y = Math.max(y * Math.cos(rotation * deg2rad), 4);\n }\n return {\n x: (-baseline / 3) * Math.sin(rotation * deg2rad),\n y: y\n };\n };\n /**\n * Compatibility function to convert the legacy one-dimensional path array\n * into an array of segments.\n *\n * It is used in maps to parse the `path` option, and in SVGRenderer.dSetter\n * to support legacy paths from demos.\n *\n * @private\n * @function Highcharts.SVGRenderer#pathToSegments\n */\n SVGRenderer.prototype.pathToSegments = function (path) {\n var ret = [];\n var segment = [];\n var commandLength = {\n A: 8,\n C: 7,\n H: 2,\n L: 3,\n M: 3,\n Q: 5,\n S: 5,\n T: 3,\n V: 2\n };\n // Short, non-typesafe parsing of the one-dimensional array. It splits\n // the path on any string. This is not type checked against the tuple\n // types, but is shorter, and doesn't require specific checks for any\n // command type in SVG.\n for (var i = 0; i < path.length; i++) {\n // Command skipped, repeat previous or insert L/l for M/m\n if (isString(segment[0]) &&\n isNumber(path[i]) &&\n segment.length === commandLength[(segment[0].toUpperCase())]) {\n path.splice(i, 0, segment[0].replace('M', 'L').replace('m', 'l'));\n }\n // Split on string\n if (typeof path[i] === 'string') {\n if (segment.length) {\n ret.push(segment.slice(0));\n }\n segment.length = 0;\n }\n segment.push(path[i]);\n }\n ret.push(segment.slice(0));\n return ret;\n /*\n // Fully type-safe version where each tuple type is checked. The\n // downside is filesize and a lack of flexibility for unsupported\n // commands\n const ret: SVGPath = [],\n commands = {\n A: 7,\n C: 6,\n H: 1,\n L: 2,\n M: 2,\n Q: 4,\n S: 4,\n T: 2,\n V: 1,\n Z: 0\n };\n\n let i = 0,\n lastI = 0,\n lastCommand;\n\n while (i < path.length) {\n const item = path[i];\n\n let command;\n\n if (typeof item === 'string') {\n command = item;\n i += 1;\n } else {\n command = lastCommand || 'M';\n }\n\n // Upper case\n const commandUC = command.toUpperCase();\n\n if (commandUC in commands) {\n\n // No numeric parameters\n if (command === 'Z' || command === 'z') {\n ret.push([command]);\n\n // One numeric parameter\n } else {\n const val0 = path[i];\n if (typeof val0 === 'number') {\n\n // Horizontal line to\n if (command === 'H' || command === 'h') {\n ret.push([command, val0]);\n i += 1;\n\n // Vertical line to\n } else if (command === 'V' || command === 'v') {\n ret.push([command, val0]);\n i += 1;\n\n // Two numeric parameters\n } else {\n const val1 = path[i + 1];\n if (typeof val1 === 'number') {\n // lineTo\n if (command === 'L' || command === 'l') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // moveTo\n } else if (command === 'M' || command === 'm') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Smooth quadratic bezier\n } else if (command === 'T' || command === 't') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Four numeric parameters\n } else {\n const val2 = path[i + 2],\n val3 = path[i + 3];\n if (\n typeof val2 === 'number' &&\n typeof val3 === 'number'\n ) {\n // Quadratic bezier to\n if (\n command === 'Q' ||\n command === 'q'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Smooth cubic bezier to\n } else if (\n command === 'S' ||\n command === 's'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Six numeric parameters\n } else {\n const val4 = path[i + 4],\n val5 = path[i + 5];\n\n if (\n typeof val4 === 'number' &&\n typeof val5 === 'number'\n ) {\n // Curve to\n if (\n command === 'C' ||\n command === 'c'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5\n ]);\n i += 6;\n\n // Seven numeric parameters\n } else {\n const val6 = path[i + 6];\n\n // Arc to\n if (\n typeof val6 ===\n 'number' &&\n (\n command === 'A' ||\n command === 'a'\n )\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5,\n val6\n ]);\n i += 7;\n\n }\n\n }\n }\n }\n }\n }\n }\n\n }\n }\n }\n }\n\n // An unmarked command following a moveTo is a lineTo\n lastCommand = command === 'M' ? 'L' : command;\n\n if (i === lastI) {\n break;\n }\n lastI = i;\n }\n return ret;\n */\n };\n /**\n * Draw a label, which is an extended text element with support for border\n * and background. Highcharts creates a `g` element with a text and a `path`\n * or `rect` inside, to make it behave somewhat like a HTML div. Border and\n * background are set through `stroke`, `stroke-width` and `fill` attributes\n * using the {@link Highcharts.SVGElement#attr|attr} method. To update the\n * text after render, run `label.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-label-on-chart/\n * A label on the chart\n *\n * @function Highcharts.SVGRenderer#label\n *\n * @param {string} str\n * The initial text string or (subset) HTML to render.\n *\n * @param {number} x\n * The x position of the label's left side.\n *\n * @param {number} [y]\n * The y position of the label's top side or baseline, depending on\n * the `baseline` parameter.\n *\n * @param {string} [shape='rect']\n * The shape of the label's border/background, if any. Defaults to\n * `rect`. Other possible values are `callout` or other shapes\n * defined in {@link Highcharts.SVGRenderer#symbols}.\n *\n * @param {number} [anchorX]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {number} [anchorY]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @param {boolean} [baseline=false]\n * Whether to position the label relative to the text baseline,\n * like {@link Highcharts.SVGRenderer#text|renderer.text}, or to the\n * upper border of the rectangle.\n *\n * @param {string} [className]\n * Class name for the group.\n *\n * @return {Highcharts.SVGElement}\n * The generated label.\n */\n SVGRenderer.prototype.label = function (str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n return new SVGLabel(this, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className);\n };\n /**\n * Re-align all aligned elements.\n *\n * @private\n * @function Highcharts.SVGRenderer#alignElements\n */\n SVGRenderer.prototype.alignElements = function () {\n this.alignedObjects.forEach(function (el) { return el.align(); });\n };\n return SVGRenderer;\n }());\n extend(SVGRenderer.prototype, {\n /**\n * A pointer to the renderer's associated Element class. The VMLRenderer\n * will have a pointer to VMLElement here.\n *\n * @name Highcharts.SVGRenderer#Element\n * @type {Highcharts.SVGElement}\n */\n Element: SVGElement,\n SVG_NS: SVG_NS,\n /**\n * A collection of characters mapped to HTML entities. When `useHTML` on an\n * element is true, these entities will be rendered correctly by HTML. In\n * the SVG pseudo-HTML, they need to be unescaped back to simple characters,\n * so for example `<` will render as `<`.\n *\n * @example\n * // Add support for unescaping quotes\n * Highcharts.SVGRenderer.prototype.escapes['\"'] = '"';\n *\n * @name Highcharts.SVGRenderer#escapes\n * @type {Highcharts.Dictionary}\n */\n escapes: {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n },\n /**\n * An extendable collection of functions for defining symbol paths.\n *\n * @name Highcharts.SVGRenderer#symbols\n * @type {Highcharts.SymbolDictionary}\n */\n symbols: Symbols,\n /**\n * Dummy function for plugins, called every time the renderer is updated.\n * Prior to Highcharts 5, this was used for the canvg renderer.\n *\n * @deprecated\n * @function Highcharts.SVGRenderer#draw\n */\n draw: noop\n });\n /* *\n *\n * Registry\n *\n * */\n RendererRegistry.registerRendererType('svg', SVGRenderer, true);\n /* *\n *\n * Export Default\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A clipping rectangle that can be applied to one or more {@link SVGElement}\n * instances. It is instanciated with the {@link SVGRenderer#clipRect} function\n * and applied with the {@link SVGElement#clip} function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @typedef {Highcharts.SVGElement} Highcharts.ClipRectElement\n */\n /**\n * The font metrics.\n *\n * @interface Highcharts.FontMetricsObject\n */ /**\n * The baseline relative to the top of the box.\n *\n * @name Highcharts.FontMetricsObject#b\n * @type {number}\n */ /**\n * The font size.\n *\n * @name Highcharts.FontMetricsObject#f\n * @type {number}\n */ /**\n * The line height.\n *\n * @name Highcharts.FontMetricsObject#h\n * @type {number}\n */\n /**\n * An object containing `x` and `y` properties for the position of an element.\n *\n * @interface Highcharts.PositionObject\n */ /**\n * X position of the element.\n * @name Highcharts.PositionObject#x\n * @type {number}\n */ /**\n * Y position of the element.\n * @name Highcharts.PositionObject#y\n * @type {number}\n */\n /**\n * A rectangle.\n *\n * @interface Highcharts.RectangleObject\n */ /**\n * Height of the rectangle.\n * @name Highcharts.RectangleObject#height\n * @type {number}\n */ /**\n * Width of the rectangle.\n * @name Highcharts.RectangleObject#width\n * @type {number}\n */ /**\n * Horizontal position of the rectangle.\n * @name Highcharts.RectangleObject#x\n * @type {number}\n */ /**\n * Vertical position of the rectangle.\n * @name Highcharts.RectangleObject#y\n * @type {number}\n */\n /**\n * The shadow options.\n *\n * @interface Highcharts.ShadowOptionsObject\n */ /**\n * The shadow color.\n * @name Highcharts.ShadowOptionsObject#color\n * @type {Highcharts.ColorString|undefined}\n * @default #000000\n */ /**\n * The horizontal offset from the element.\n *\n * @name Highcharts.ShadowOptionsObject#offsetX\n * @type {number|undefined}\n * @default 1\n */ /**\n * The vertical offset from the element.\n * @name Highcharts.ShadowOptionsObject#offsetY\n * @type {number|undefined}\n * @default 1\n */ /**\n * The shadow opacity.\n *\n * @name Highcharts.ShadowOptionsObject#opacity\n * @type {number|undefined}\n * @default 0.15\n */ /**\n * The shadow width or distance from the element.\n * @name Highcharts.ShadowOptionsObject#width\n * @type {number|undefined}\n * @default 3\n */\n /**\n * @interface Highcharts.SizeObject\n */ /**\n * @name Highcharts.SizeObject#height\n * @type {number}\n */ /**\n * @name Highcharts.SizeObject#width\n * @type {number}\n */\n /**\n * Array of path commands, that will go into the `d` attribute of an SVG\n * element.\n *\n * @typedef {Array<(Array|Array|Array|Array|Array|Array)>} Highcharts.SVGPathArray\n */\n /**\n * Possible path commands in an SVG path array. Valid values are `A`, `C`, `H`,\n * `L`, `M`, `Q`, `S`, `T`, `V`, `Z`.\n *\n * @typedef {string} Highcharts.SVGPathCommand\n * @validvalue [\"a\",\"c\",\"h\",\"l\",\"m\",\"q\",\"s\",\"t\",\"v\",\"z\",\"A\",\"C\",\"H\",\"L\",\"M\",\"Q\",\"S\",\"T\",\"V\",\"Z\"]\n */\n /**\n * An extendable collection of functions for defining symbol paths. Symbols are\n * used internally for point markers, button and label borders and backgrounds,\n * or custom shapes. Extendable by adding to {@link SVGRenderer#symbols}.\n *\n * @interface Highcharts.SymbolDictionary\n */ /**\n * @name Highcharts.SymbolDictionary#[key:string]\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#arc\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#callout\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#circle\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#diamond\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#square\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#triangle\n * @type {Function|undefined}\n */\n /**\n * Can be one of `arc`, `callout`, `circle`, `diamond`, `square`, `triangle`,\n * and `triangle-down`. Symbols are used internally for point markers, button\n * and label borders and backgrounds, or custom shapes. Extendable by adding to\n * {@link SVGRenderer#symbols}.\n *\n * @typedef {\"arc\"|\"callout\"|\"circle\"|\"diamond\"|\"square\"|\"triangle\"|\"triangle-down\"} Highcharts.SymbolKeyValue\n */\n /**\n * Additional options, depending on the actual symbol drawn.\n *\n * @interface Highcharts.SymbolOptionsObject\n */ /**\n * The anchor X position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorX\n * @type {number|undefined}\n */ /**\n * The anchor Y position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorY\n * @type {number|undefined}\n */ /**\n * The end angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#end\n * @type {number|undefined}\n */ /**\n * Whether to draw `arc` symbol open or closed.\n *\n * @name Highcharts.SymbolOptionsObject#open\n * @type {boolean|undefined}\n */ /**\n * The radius of an `arc` symbol, or the border radius for the `callout` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#r\n * @type {number|undefined}\n */ /**\n * The start angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#start\n * @type {number|undefined}\n */\n (''); // keeps doclets above in transpiled file\n\n return SVGRenderer;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLElement.js', [_modules['Core/Globals.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (H, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n win = H.win;\n var css = U.css,\n defined = U.defined,\n extend = U.extend,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n var HTMLElement = /** @class */ (function (_super) {\n __extends(HTMLElement, _super);\n function HTMLElement() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Modifies SVGElement to support HTML elements.\n * @private\n */\n HTMLElement.compose = function (SVGElementClass) {\n if (HTMLElement.composedClasses.indexOf(SVGElementClass) === -1) {\n HTMLElement.composedClasses.push(SVGElementClass);\n var htmlElementProto = HTMLElement.prototype,\n svgElementProto = SVGElementClass.prototype;\n svgElementProto.getSpanCorrection = htmlElementProto\n .getSpanCorrection;\n svgElementProto.htmlCss = htmlElementProto.htmlCss;\n svgElementProto.htmlGetBBox = htmlElementProto.htmlGetBBox;\n svgElementProto.htmlUpdateTransform = htmlElementProto\n .htmlUpdateTransform;\n svgElementProto.setSpanRotation = htmlElementProto.setSpanRotation;\n }\n return SVGElementClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the correction in X and Y positioning as the element is rotated.\n * @private\n */\n HTMLElement.prototype.getSpanCorrection = function (width, baseline, alignCorrection) {\n this.xCorr = -width * alignCorrection;\n this.yCorr = -baseline;\n };\n /**\n * Apply CSS to HTML elements. This is used in text within SVG rendering and\n * by the VML renderer\n * @private\n */\n HTMLElement.prototype.htmlCss = function (styles) {\n var wrapper = this,\n element = wrapper.element, \n // When setting or unsetting the width style, we need to update\n // transform (#8809)\n isSettingWidth = (element.tagName === 'SPAN' &&\n styles &&\n 'width' in styles),\n textWidth = pick(isSettingWidth && styles.width,\n void 0);\n var doTransform;\n if (isSettingWidth) {\n delete styles.width;\n wrapper.textWidth = textWidth;\n doTransform = true;\n }\n if (styles && styles.textOverflow === 'ellipsis') {\n styles.whiteSpace = 'nowrap';\n styles.overflow = 'hidden';\n }\n wrapper.styles = extend(wrapper.styles, styles);\n css(wrapper.element, styles);\n // Now that all styles are applied, to the transform\n if (doTransform) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n /**\n * VML and useHTML method for calculating the bounding box based on offsets.\n */\n HTMLElement.prototype.htmlGetBBox = function () {\n var wrapper = this,\n element = wrapper.element;\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n };\n /**\n * VML override private method to update elements based on internal\n * properties based on SVG transform.\n * @private\n */\n HTMLElement.prototype.htmlUpdateTransform = function () {\n // aligning non added elements is expensive\n if (!this.added) {\n this.alignOnAdd = true;\n return;\n }\n var wrapper = this,\n renderer = wrapper.renderer,\n elem = wrapper.element,\n translateX = wrapper.translateX || 0,\n translateY = wrapper.translateY || 0,\n x = wrapper.x || 0,\n y = wrapper.y || 0,\n align = wrapper.textAlign || 'left',\n alignCorrection = {\n left: 0,\n center: 0.5,\n right: 1\n }[align],\n styles = wrapper.styles,\n whiteSpace = styles && styles.whiteSpace;\n /** @private */\n function getTextPxLength() {\n if (wrapper.textPxLength) {\n return wrapper.textPxLength;\n }\n // Reset multiline/ellipsis in order to read width (#4928,\n // #5417)\n css(elem, {\n width: '',\n whiteSpace: whiteSpace || 'nowrap'\n });\n return elem.offsetWidth;\n }\n // apply translate\n css(elem, {\n marginLeft: translateX,\n marginTop: translateY\n });\n if (!renderer.styledMode && wrapper.shadows) { // used in labels/tooltip\n wrapper.shadows.forEach(function (shadow) {\n css(shadow, {\n marginLeft: translateX + 1,\n marginTop: translateY + 1\n });\n });\n }\n // apply inversion\n if (wrapper.inverted) { // wrapper is a group\n [].forEach.call(elem.childNodes, function (child) {\n renderer.invertChild(child, elem);\n });\n }\n if (elem.tagName === 'SPAN') {\n var rotation = wrapper.rotation, textWidth = wrapper.textWidth && pInt(wrapper.textWidth), currentTextTransform = [\n rotation,\n align,\n elem.innerHTML,\n wrapper.textWidth,\n wrapper.textAlign\n ].join(',');\n var baseline = void 0,\n hasBoxWidthChanged = false;\n // Update textWidth. Use the memoized textPxLength if possible, to\n // avoid the getTextPxLength function using elem.offsetWidth.\n // Calling offsetWidth affects rendering time as it forces layout\n // (#7656).\n if (textWidth !== wrapper.oldTextWidth) { // #983, #1254\n var textPxLength = getTextPxLength();\n if (((textWidth > wrapper.oldTextWidth) ||\n textPxLength > textWidth) && (\n // Only set the width if the text is able to word-wrap,\n // or text-overflow is ellipsis (#9537)\n /[ \\-]/.test(elem.textContent || elem.innerText) ||\n elem.style.textOverflow === 'ellipsis')) {\n css(elem, {\n width: (textPxLength > textWidth) || rotation ?\n textWidth + 'px' :\n 'auto',\n display: 'block',\n whiteSpace: whiteSpace || 'normal' // #3331\n });\n wrapper.oldTextWidth = textWidth;\n hasBoxWidthChanged = true; // #8159\n }\n }\n wrapper.hasBoxWidthChanged = hasBoxWidthChanged; // #8159\n // Do the calculations and DOM access only if properties changed\n if (currentTextTransform !== wrapper.cTT) {\n baseline = renderer.fontMetrics(elem.style.fontSize, elem).b;\n // Renderer specific handling of span rotation, but only if we\n // have something to update.\n if (defined(rotation) &&\n ((rotation !== (wrapper.oldRotation || 0)) ||\n (align !== wrapper.oldAlign))) {\n wrapper.setSpanRotation(rotation, alignCorrection, baseline);\n }\n wrapper.getSpanCorrection(\n // Avoid elem.offsetWidth if we can, it affects rendering\n // time heavily (#7656)\n ((!defined(rotation) && wrapper.textPxLength) || // #7920\n elem.offsetWidth), baseline, alignCorrection, rotation, align);\n }\n // apply position with correction\n css(elem, {\n left: (x + (wrapper.xCorr || 0)) + 'px',\n top: (y + (wrapper.yCorr || 0)) + 'px'\n });\n // record current text transform\n wrapper.cTT = currentTextTransform;\n wrapper.oldRotation = rotation;\n wrapper.oldAlign = align;\n }\n };\n /**\n * Set the rotation of an individual HTML span.\n * @private\n */\n HTMLElement.prototype.setSpanRotation = function (rotation, alignCorrection, baseline) {\n var getTransformKey = function () { return (isMS &&\n !/Edge/.test(win.navigator.userAgent) ?\n '-ms-transform' :\n isWebKit ?\n '-webkit-transform' :\n isFirefox ?\n 'MozTransform' :\n win.opera ?\n '-o-transform' :\n void 0); };\n var rotationStyle = {},\n cssTransformKey = getTransformKey();\n if (cssTransformKey) {\n rotationStyle[cssTransformKey] = rotationStyle.transform =\n 'rotate(' + rotation + 'deg)';\n rotationStyle[cssTransformKey + (isFirefox ? 'Origin' : '-origin')] = rotationStyle.transformOrigin =\n (alignCorrection * 100) + '% ' + baseline + 'px';\n css(this.element, rotationStyle);\n }\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLElement.composedClasses = [];\n return HTMLElement;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLElement;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (AST, SVGElement, SVGRenderer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var attr = U.attr,\n createElement = U.createElement,\n extend = U.extend,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n // Extend SvgRenderer for useHTML option.\n var HTMLRenderer = /** @class */ (function (_super) {\n __extends(HTMLRenderer, _super);\n function HTMLRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /** @private */\n HTMLRenderer.compose = function (SVGRendererClass) {\n if (HTMLRenderer.composedClasses.indexOf(SVGRendererClass) === -1) {\n HTMLRenderer.composedClasses.push(SVGRendererClass);\n var htmlRendererProto = HTMLRenderer.prototype,\n svgRendererProto = SVGRendererClass.prototype;\n svgRendererProto.html = htmlRendererProto.html;\n }\n return SVGRendererClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Create HTML text node. This is used by the VML renderer as well as the\n * SVG renderer through the useHTML option.\n *\n * @private\n * @function Highcharts.SVGRenderer#html\n *\n * @param {string} str\n * The text of (subset) HTML to draw.\n *\n * @param {number} x\n * The x position of the text's lower left corner.\n *\n * @param {number} y\n * The y position of the text's lower left corner.\n *\n * @return {Highcharts.HTMLDOMElement}\n * HTML element.\n */\n HTMLRenderer.prototype.html = function (str, x, y) {\n var wrapper = this.createElement('span'), element = wrapper.element, renderer = wrapper.renderer, isSVG = renderer.isSVG, addSetters = function (gWrapper, style) {\n // These properties are set as attributes on the SVG group, and\n // as identical CSS properties on the div. (#3542)\n ['opacity', 'visibility'].forEach(function (prop) {\n gWrapper[prop + 'Setter'] = function (value, key, elem) {\n var styleObject = gWrapper.div ?\n gWrapper.div.style :\n style;\n SVGElement.prototype[prop + 'Setter']\n .call(this, value, key, elem);\n if (styleObject) {\n styleObject[key] = value;\n }\n };\n });\n gWrapper.addedSetters = true;\n };\n // Text setter\n wrapper.textSetter = function (value) {\n if (value !== this.textStr) {\n delete this.bBox;\n delete this.oldTextWidth;\n AST.setElementHTML(this.element, pick(value, ''));\n this.textStr = value;\n wrapper.doTransform = true;\n }\n };\n // Add setters for the element itself (#4938)\n if (isSVG) { // #4938, only for HTML within SVG\n addSetters(wrapper, wrapper.element.style);\n }\n // Various setters which rely on update transform\n wrapper.xSetter =\n wrapper.ySetter =\n wrapper.alignSetter =\n wrapper.rotationSetter =\n function (value, key) {\n if (key === 'align') {\n // Do not overwrite the SVGElement.align method. Same as VML.\n wrapper.alignValue = wrapper.textAlign = value;\n }\n else {\n wrapper[key] = value;\n }\n wrapper.doTransform = true;\n };\n // Runs at the end of .attr()\n wrapper.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.htmlUpdateTransform();\n this.doTransform = false;\n }\n };\n // Set the default attributes\n wrapper\n .attr({\n text: str,\n x: Math.round(x),\n y: Math.round(y)\n })\n .css({\n position: 'absolute'\n });\n if (!renderer.styledMode) {\n wrapper.css({\n fontFamily: this.style.fontFamily,\n fontSize: this.style.fontSize\n });\n }\n // Keep the whiteSpace style outside the wrapper.styles collection\n element.style.whiteSpace = 'nowrap';\n // Use the HTML specific .css method\n wrapper.css = wrapper.htmlCss;\n // This is specific for HTML within SVG\n if (isSVG) {\n wrapper.add = function (svgGroupWrapper) {\n var container = renderer.box.parentNode,\n parents = [];\n var htmlGroup,\n parentGroup;\n this.parentGroup = svgGroupWrapper;\n // Create a mock group to hold the HTML elements\n if (svgGroupWrapper) {\n htmlGroup = svgGroupWrapper.div;\n if (!htmlGroup) {\n // Read the parent chain into an array and read from top\n // down\n parentGroup = svgGroupWrapper;\n while (parentGroup) {\n parents.push(parentGroup);\n // Move up to the next parent group\n parentGroup = parentGroup.parentGroup;\n }\n // Ensure dynamically updating position when any parent\n // is translated\n parents.reverse().forEach(function (parentGroup) {\n var cls = attr(parentGroup.element, 'class');\n /**\n * Common translate setter for X and Y on the HTML\n * group. Reverted the fix for #6957 du to\n * positioning problems and offline export (#7254,\n * #7280, #7529)\n * @private\n * @param {*} value\n * @param {string} key\n */\n function translateSetter(value, key) {\n parentGroup[key] = value;\n if (key === 'translateX') {\n htmlGroupStyle.left = value + 'px';\n }\n else {\n htmlGroupStyle.top = value + 'px';\n }\n parentGroup.doTransform = true;\n }\n // Create a HTML div and append it to the parent div\n // to emulate the SVG group structure\n var parentGroupStyles = parentGroup.styles || {};\n htmlGroup =\n parentGroup.div =\n parentGroup.div || createElement('div', cls ? { className: cls } : void 0, {\n position: 'absolute',\n left: (parentGroup.translateX || 0) + 'px',\n top: (parentGroup.translateY || 0) + 'px',\n display: parentGroup.display,\n opacity: parentGroup.opacity,\n cursor: parentGroupStyles.cursor,\n pointerEvents: (\n // #5595\n parentGroupStyles.pointerEvents),\n visibility: parentGroup.visibility\n // the top group is appended to container\n }, htmlGroup || container);\n // Shortcut\n var htmlGroupStyle = htmlGroup.style;\n // Set listeners to update the HTML div's position\n // whenever the SVG group position is changed.\n extend(parentGroup, {\n // (#7287) Pass htmlGroup to use\n // the related group\n classSetter: (function (htmlGroup) {\n return function (value) {\n this.element.setAttribute('class', value);\n htmlGroup.className = value;\n };\n }(htmlGroup)),\n on: function () {\n if (parents[0].div) { // #6418\n wrapper.on.apply({\n element: parents[0].div,\n onEvents: parentGroup.onEvents\n }, arguments);\n }\n return parentGroup;\n },\n translateXSetter: translateSetter,\n translateYSetter: translateSetter\n });\n if (!parentGroup.addedSetters) {\n addSetters(parentGroup);\n }\n });\n }\n }\n else {\n htmlGroup = container;\n }\n htmlGroup.appendChild(element);\n // Shared with VML:\n wrapper.added = true;\n if (wrapper.alignOnAdd) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n }\n return wrapper;\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLRenderer.composedClasses = [];\n return HTMLRenderer;\n }(SVGRenderer));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLRenderer;\n });\n _registerModule(_modules, 'Core/Axis/AxisDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var AxisDefaults;\n (function (AxisDefaults) {\n /* *\n *\n * Constants\n *\n * */\n /**\n * The X axis or category axis. Normally this is the horizontal axis,\n * though if the chart is inverted this is the vertical axis. In case of\n * multiple axes, the xAxis node is an array of configuration objects.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden, but it is used behind the scenes to\n * control features like zooming and panning. Zooming is in effect the same\n * as setting the extremes of one of the exes.\n *\n * @type {*|Array<*>}\n * @optionparent xAxis\n */\n AxisDefaults.defaultXAxisOptions = {\n /**\n * When using multiple axis, the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks, as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy, it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in an Axis options are set to false,\n * then the `alignTicks ` will be disabled for the Axis.\n *\n * Disabled for logarithmic axes.\n *\n * @product highcharts highstock gantt\n */\n alignTicks: true,\n /**\n * Whether to allow decimals in this axis' ticks. When counting\n * integers, like persons or hits on a web page, decimals should\n * be avoided in the labels. By default, decimals are allowed on small\n * scale axes.\n *\n * @see [minTickInterval](#xAxis.minTickInterval)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-true/\n * True by default\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-false/\n * False\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 2.0\n */\n allowDecimals: void 0,\n /**\n * When using an alternate grid color, a band is painted across the\n * plot area between every other grid line.\n *\n * @sample {highcharts} highcharts/yaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n * @sample {highstock} stock/xaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n *\n * @type {Highcharts.ColorType}\n * @apioption xAxis.alternateGridColor\n */\n /**\n * An array defining breaks in the axis, the sections defined will be\n * left out and all the points shifted closer to each other.\n *\n * @productdesc {highcharts}\n * Requires that the broken-axis.js module is loaded.\n *\n * @sample {highcharts} highcharts/axisbreak/break-simple/\n * Simple break\n * @sample {highcharts|highstock} highcharts/axisbreak/break-visualized/\n * Advanced with callback\n * @sample {highstock} stock/demo/intraday-breaks/\n * Break on nights and weekends\n *\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks\n */\n /**\n * A number indicating how much space should be left between the start\n * and the end of the break. The break size is given in axis units,\n * so for instance on a `datetime` axis, a break size of 3600000 would\n * indicate the equivalent of an hour.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.breakSize\n */\n /**\n * The point where the break starts.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.from\n */\n /**\n * Defines an interval after which the break appears again. By default\n * the breaks do not repeat.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.repeat\n */\n /**\n * The point where the break ends.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.to\n */\n /**\n * If categories are present for the xAxis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also\n * be extracted by giving each point a [name](#series.data) and setting\n * axis [type](#xAxis.type) to `category`. However, if you have multiple\n * series, best practice remains defining the `categories` array.\n *\n * Example: `categories: ['Apples', 'Bananas', 'Oranges']`\n *\n * @sample {highcharts} highcharts/demo/line-labels/\n * With\n * @sample {highcharts} highcharts/xaxis/categories/\n * Without\n *\n * @type {Array}\n * @product highcharts gantt\n * @apioption xAxis.categories\n */\n /**\n * The highest allowed value for automatically computed axis extremes.\n *\n * @see [floor](#xAxis.floor)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.ceiling\n */\n /**\n * A class name that opens for styling the axis by CSS, especially in\n * Highcharts styled mode. The class name is applied to group elements\n * for the grid, axis elements and labels.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/css/axis/\n * Multiple axes with separate styling\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.className\n */\n /**\n * Configure a crosshair that follows either the mouse pointer or the\n * hovered point.\n *\n * In styled mode, the crosshairs are styled in the\n * `.highcharts-crosshair`, `.highcharts-crosshair-thin` or\n * `.highcharts-xaxis-category` classes.\n *\n * @productdesc {highstock}\n * In Highcharts stock, by default, the crosshair is enabled on the\n * X axis and disabled on the Y axis.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Crosshair on both axes, with y axis label\n * @sample {highmaps} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n *\n * @declare Highcharts.AxisCrosshairOptions\n * @type {boolean|*}\n * @default false\n * @since 4.1\n * @apioption xAxis.crosshair\n */\n /**\n * A class name for the crosshair, especially as a hook for styling.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.crosshair.className\n */\n /**\n * The color of the crosshair. Defaults to `#cccccc` for numeric and\n * datetime axes, and `rgba(204,214,235,0.25)` for category axes, where\n * the crosshair by default highlights the whole category.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {Highcharts.ColorType}\n * @default #cccccc\n * @since 4.1\n * @apioption xAxis.crosshair.color\n */\n /**\n * The dash style for the crosshair. See\n * [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n * for possible values.\n *\n * @sample {highcharts|highmaps} highcharts/xaxis/crosshair-dotted/\n * Dotted crosshair\n * @sample {highstock} stock/xaxis/crosshair-dashed/\n * Dashed X axis crosshair\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 4.1\n * @apioption xAxis.crosshair.dashStyle\n */\n /**\n * A label on the axis next to the crosshair.\n *\n * In styled mode, the label is styled with the\n * `.highcharts-crosshair-label` class.\n *\n * @sample {highstock} stock/xaxis/crosshair-label/\n * Crosshair labels\n * @sample {highstock} highcharts/css/crosshair-label/\n * Style mode\n *\n * @declare Highcharts.AxisCrosshairLabelOptions\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label\n */\n /**\n * Alignment of the label compared to the axis. Defaults to `\"left\"` for\n * right-side axes, `\"right\"` for left-side axes and `\"center\"` for\n * horizontal axes.\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.align\n */\n /**\n * The background color for the label. Defaults to the related series\n * color, or `#666666` if that is not available.\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.backgroundColor\n */\n /**\n * The border color for the crosshair label\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderColor\n */\n /**\n * The border corner radius of the crosshair label.\n *\n * @type {number}\n * @default 3\n * @since 2.1.10\n * @product highstock\n * @apioption xAxis.crosshair.label.borderRadius\n */\n /**\n * The border width for the crosshair label.\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderWidth\n */\n /**\n * Flag to enable crosshair's label.\n *\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Enabled label for yAxis' crosshair\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.enabled\n */\n /**\n * A format string for the crosshair label. Defaults to `{value}` for\n * numeric axes and `{value:%b %d, %Y}` for datetime axes.\n *\n * @type {string}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.format\n */\n /**\n * Formatter function for the label text.\n *\n * @type {Highcharts.XAxisCrosshairLabelFormatterCallbackFunction}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.formatter\n */\n /**\n * Padding inside the crosshair label.\n *\n * @type {number}\n * @default 8\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.padding\n */\n /**\n * The shape to use for the label box.\n *\n * @type {string}\n * @default callout\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.shape\n */\n /**\n * Text styles for the crosshair label.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"white\", \"fontWeight\": \"normal\", \"fontSize\": \"11px\", \"textAlign\": \"center\"}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.style\n */\n /**\n * Whether the crosshair should snap to the point or follow the pointer\n * independent of points.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/crosshair-snap-false/\n * True by default\n * @sample {highmaps} maps/demo/latlon-advanced/\n * Snap is false\n *\n * @type {boolean}\n * @default true\n * @since 4.1\n * @apioption xAxis.crosshair.snap\n */\n /**\n * The pixel width of the crosshair. Defaults to 1 for numeric or\n * datetime axes, and for one category width for category axes.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highstock} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {number}\n * @default 1\n * @since 4.1\n * @apioption xAxis.crosshair.width\n */\n /**\n * The Z index of the crosshair. Higher Z indices allow drawing the\n * crosshair on top of the series or behind the grid lines.\n *\n * @type {number}\n * @default 2\n * @since 4.1\n * @apioption xAxis.crosshair.zIndex\n */\n /**\n * Whether to pan axis. If `chart.panning` is enabled, the option\n * allows to disable panning on an individual axis.\n */\n panningEnabled: true,\n /**\n * The Z index for the axis group.\n */\n zIndex: 2,\n /**\n * Whether to zoom axis. If `chart.zoomType` is set, the option allows\n * to disable zooming on an individual axis.\n *\n * @sample {highcharts} highcharts/xaxis/zoomenabled/\n * Zoom enabled is false\n */\n zoomEnabled: true,\n /**\n * For a datetime axis, the scale will automatically adjust to the\n * appropriate unit. This member gives the default string\n * representations used for each unit. For intermediate values,\n * different units may be used, for example the `day` unit can be used\n * on midnight and `hour` unit be used for intermediate values on the\n * same axis.\n *\n * For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * Defaults to:\n * ```js\n * {\n * millisecond: '%H:%M:%S.%L',\n * second: '%H:%M:%S',\n * minute: '%H:%M',\n * hour: '%H:%M',\n * day: '%e. %b',\n * week: '%e. %b',\n * month: '%b \\'%y',\n * year: '%Y'\n * }\n * ```\n *\n * @sample {highcharts} highcharts/xaxis/datetimelabelformats/\n * Different day format on X axis\n * @sample {highstock} stock/xaxis/datetimelabelformats/\n * More information in x axis labels\n *\n * @declare Highcharts.AxisDateTimeLabelFormatsOptions\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n millisecond: {\n main: '%H:%M:%S.%L',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n second: {\n main: '%H:%M:%S',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n minute: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n hour: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n day: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n week: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n month: {\n main: '%b \\'%y'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n year: {\n main: '%Y'\n }\n },\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `endOnTick` is always `false` when the navigator\n * is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False\n *\n * @since 1.2.0\n */\n endOnTick: false,\n /**\n * Event handlers for the axis.\n *\n * @type {*}\n * @apioption xAxis.events\n */\n /**\n * An event fired after the breaks have rendered.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-event/\n * AfterBreak Event\n *\n * @type {Highcharts.AxisEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @apioption xAxis.events.afterBreaks\n */\n /**\n * As opposed to the `setExtremes` event, this event fires after the\n * final min and max values are computed and corrected for `minRange`.\n *\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function, containing\n * common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in axis values. The actual data extremes are found in\n * `event.dataMin` and `event.dataMax`.\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 2.3\n * @context Highcharts.Axis\n * @apioption xAxis.events.afterSetExtremes\n */\n /**\n * An event fired when a break from this axis occurs on a point.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-visualized/\n * Visualization of a Break\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointBreak\n */\n /**\n * An event fired when a point falls inside a break from this axis.\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @product highcharts highstock gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointInBreak\n */\n /**\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function,\n * containing common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in data values. When an axis is zoomed all the way out from\n * the \"Reset zoom\" button, `event.min` and `event.max` are null, and\n * the new extremes are set based on `this.dataMin` and `this.dataMax`.\n *\n * @sample {highstock} stock/xaxis/events-setextremes/\n * Log new extremes on x axis\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Axis\n * @apioption xAxis.events.setExtremes\n */\n /**\n * The lowest allowed value for automatically computed axis extremes.\n *\n * @see [ceiling](#yAxis.ceiling)\n *\n * @sample {highcharts} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n * @sample {highstock} stock/demo/lazy-loading/\n * Prevent negative stock price on Y axis\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.floor\n */\n /**\n * The dash or dot style of the grid lines. For possible values, see\n * [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/gridlinedashstyle/\n * Long dashes\n * @sample {highstock} stock/xaxis/gridlinedashstyle/\n * Long dashes\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n gridLineDashStyle: 'Solid',\n /**\n * The Z index of the grid lines.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/gridzindex/\n * A Z index of 4 renders the grid above the graph\n *\n * @product highcharts highstock gantt\n */\n gridZIndex: 1,\n /**\n * An id for the axis. This can be used after render time to get\n * a pointer to the axis object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/xaxis/id/\n * Get the object\n * @sample {highstock} stock/xaxis/id/\n * Get the object\n *\n * @type {string}\n * @since 1.2.0\n * @apioption xAxis.id\n */\n /**\n * The axis labels show the number or category for each tick.\n *\n * Since v8.0.0: Labels are animated in categorized x-axis with\n * updating data if `tickInterval` and `step` is set to 1.\n *\n * @productdesc {highmaps}\n * X and Y axis labels are by default disabled in Highmaps, but the\n * functionality is inherited from Highcharts and used on `colorAxis`,\n * and can be enabled on X and Y axes too.\n */\n labels: {\n /**\n * What part of the string the given position is anchored to.\n * If `left`, the left side of the string is at the axis position.\n * Can be one of `\"left\"`, `\"center\"` or `\"right\"`. Defaults to\n * an intelligent guess based on which side of the chart the axis\n * is on and the rotation of the label.\n *\n * @see [reserveSpace](#xAxis.labels.reserveSpace)\n *\n * @sample {highcharts} highcharts/xaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/xaxis/labels-align-right/\n * Right\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.labels.align\n */\n /**\n * Whether to allow the axis labels to overlap.\n * When false, overlapping labels are hidden.\n *\n * @sample {highcharts} highcharts/xaxis/labels-allowoverlap-true/\n * X axis labels overlap enabled\n *\n * @type {boolean}\n * @default false\n * @apioption xAxis.labels.allowOverlap\n *\n */\n /**\n * For horizontal axes, the allowed degrees of label rotation\n * to prevent overlapping labels. If there is enough space,\n * labels are not rotated. As the chart gets narrower, it\n * will start rotating the labels -45 degrees, then remove\n * every second label and try again with rotations 0 and -45 etc.\n * Set it to `undefined` to disable rotation, which will\n * cause the labels to word-wrap if possible. Defaults to `[-45]``\n * on bottom and top axes, `undefined` on left and right axes.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-default/\n * Default auto rotation of 0 or -45\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-0-90/\n * Custom graded auto rotation\n *\n * @type {Array}\n * @default undefined\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.labels.autoRotation\n */\n autoRotation: void 0,\n /**\n * When each category width is more than this many pixels, we don't\n * apply auto rotation. Instead, we lay out the axis label with word\n * wrap. A lower limit makes sense when the label contains multiple\n * short words that don't extend the available horizontal space for\n * each label.\n *\n * @sample {highcharts} highcharts/xaxis/labels-autorotationlimit/\n * Lower limit\n *\n * @since 4.1.5\n * @product highcharts gantt\n */\n autoRotationLimit: 80,\n /**\n * Polar charts only. The label's pixel distance from the perimeter\n * of the plot area.\n *\n * @type {number}\n * @default undefined\n * @product highcharts gantt\n */\n distance: void 0,\n /**\n * Enable or disable the axis labels.\n *\n * @sample {highcharts} highcharts/xaxis/labels-enabled/\n * X axis labels disabled\n * @sample {highstock} stock/xaxis/labels-enabled/\n * X axis labels disabled\n *\n * @default {highcharts|highstock|gantt} true\n * @default {highmaps} false\n */\n enabled: true,\n /**\n * A format string for the axis label. The context is available as\n * format string variables. For example, you can use `{text}` to\n * insert the default formatted text. The recommended way of adding\n * units for the label is using `text`, for example `{text} km`.\n *\n * To add custom numeric or datetime formatting, use `{value}` with\n * formatting, for example `{value:.1f}` or `{value:%Y-%m-%d}`.\n *\n * See\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for more examples of formatting.\n *\n * The default value is not specified due to the dynamic\n * nature of the default implementation.\n *\n * @sample {highcharts|highstock} highcharts/yaxis/labels-format/\n * Add units to Y axis label\n * @sample {highcharts} highcharts/xaxis/labels-format-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-format-custom/\n * Custom number format\n *\n * @type {string}\n * @since 3.0\n * @apioption xAxis.labels.format\n */\n /**\n * Callback JavaScript function to format the label. The value\n * is given by `this.value`. Additional properties for `this` are\n * `axis`, `chart`, `isFirst`, `isLast` and `text` which holds the\n * value of the default formatter.\n *\n * Defaults to a built in function returning a formatted string\n * depending on whether the axis is `category`, `datetime`,\n * `numeric` or other.\n *\n * @sample {highcharts} highcharts/xaxis/labels-formatter-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-formatter-extended/\n * Modified numeric labels\n * @sample {highstock} stock/xaxis/labels-formatter/\n * Added units on Y axis\n *\n * @type {Highcharts.AxisLabelsFormatterCallbackFunction}\n * @apioption xAxis.labels.formatter\n */\n /**\n * The number of pixels to indent the labels per level in a treegrid\n * axis.\n *\n * @sample gantt/treegrid-axis/demo\n * Indentation 10px by default.\n * @sample gantt/treegrid-axis/indentation-0px\n * Indentation set to 0px.\n *\n * @product gantt\n */\n indentation: 10,\n /**\n * Horizontal axis only. When `staggerLines` is not set,\n * `maxStaggerLines` defines how many lines the axis is allowed to\n * add to automatically avoid overlapping X labels. Set to `1` to\n * disable overlap detection.\n *\n * @deprecated\n * @type {number}\n * @default 5\n * @since 1.3.3\n * @apioption xAxis.labels.maxStaggerLines\n */\n /**\n * How to handle overflowing labels on horizontal axis. If set to\n * `\"allow\"`, it will not be aligned at all. By default it\n * `\"justify\"` labels inside the chart area. If there is room to\n * move it, it will be aligned to the edge, else it will be removed.\n *\n * @since 2.2.5\n * @validvalue [\"allow\", \"justify\"]\n */\n overflow: 'justify',\n /**\n * The pixel padding for axis labels, to ensure white space between\n * them.\n *\n * @product highcharts gantt\n */\n padding: 5,\n /**\n * Whether to reserve space for the labels. By default, space is\n * reserved for the labels in these cases:\n *\n * * On all horizontal axes.\n * * On vertical axes if `label.align` is `right` on a left-side\n * axis or `left` on a right-side axis.\n * * On vertical axes if `label.align` is `center`.\n *\n * This can be turned off when for example the labels are rendered\n * inside the plot area instead of outside.\n *\n * @see [labels.align](#xAxis.labels.align)\n *\n * @sample {highcharts} highcharts/xaxis/labels-reservespace/\n * No reserved space, labels inside plot\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {boolean}\n * @since 4.1.10\n * @product highcharts gantt\n * @apioption xAxis.labels.reserveSpace\n */\n reserveSpace: void 0,\n /**\n * Rotation of the labels in degrees. When `undefined`, the\n * `autoRotation` option takes precedence.\n *\n * @sample {highcharts} highcharts/xaxis/labels-rotation/\n * X axis labels rotated 90°\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.labels.rotation\n */\n rotation: void 0,\n /**\n * Horizontal axes only. The number of lines to spread the labels\n * over to make room or tighter labels. 0 disables staggering.\n *\n * @sample {highcharts} highcharts/xaxis/labels-staggerlines/\n * Show labels over two lines\n * @sample {highstock} stock/xaxis/labels-staggerlines/\n * Show labels over two lines\n *\n * @since 2.1\n */\n staggerLines: 0,\n /**\n * To show only every _n_'th label on the axis, set the step to _n_.\n * Setting the step to 2 shows every other label.\n *\n * By default, when 0, the step is calculated automatically to avoid\n * overlap. To prevent this, set it to 1\\. This usually only\n * happens on a category axis, and is often a sign that you have\n * chosen the wrong axis type.\n *\n * Read more at\n * [Axis docs](https://www.highcharts.com/docs/chart-concepts/axes)\n * => What axis should I use?\n *\n * @sample {highcharts} highcharts/xaxis/labels-step/\n * Showing only every other axis label on a categorized\n * x-axis\n * @sample {highcharts} highcharts/xaxis/labels-step-auto/\n * Auto steps on a category axis\n *\n * @since 2.1\n */\n step: 0,\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n */\n useHTML: false,\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: 0,\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. The default makes it adapt to the font\n * size of the bottom axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @apioption xAxis.labels.y\n */\n /**\n * The Z index for the axis labels.\n */\n zIndex: 7,\n /**\n * CSS styles for the label. Use `whiteSpace: 'nowrap'` to prevent\n * wrapping of category labels. Use `textOverflow: 'none'` to\n * prevent ellipsis (dots).\n *\n * In styled mode, the labels are styled with the\n * `.highcharts-axis-labels` class.\n *\n * @sample {highcharts} highcharts/xaxis/labels-style/\n * Red X axis labels\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* Palette.neutralColor60 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '11px'\n }\n },\n /**\n * The left position as the horizontal axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the plot width, offset from plot area\n * left.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.left\n */\n /**\n * The top position as the vertical axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the plot height, offset from plot area top.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.top\n */\n /**\n * Index of another axis that this axis is linked to. When an axis is\n * linked to a master axis, it will take the same extremes as\n * the master, but as assigned by min or max or by setExtremes.\n * It can be used to show additional info, or to ease reading the\n * chart by duplicating the scales.\n *\n * @sample {highcharts} highcharts/xaxis/linkedto/\n * Different string formats of the same date\n * @sample {highcharts} highcharts/yaxis/linkedto/\n * Y values on both sides\n *\n * @type {number}\n * @since 2.0.2\n * @product highcharts highstock gantt\n * @apioption xAxis.linkedTo\n */\n /**\n * The maximum value of the axis. If `null`, the max value is\n * automatically calculated.\n *\n * If the [endOnTick](#yAxis.endOnTick) option is true, the `max` value\n * might be rounded up.\n *\n * If a [tickAmount](#yAxis.tickAmount) is set, the axis may be extended\n * beyond the set max in order to reach the given number of ticks. The\n * same may happen in a chart with multiple axes, determined by [chart.\n * alignTicks](#chart), where a `tickAmount` is applied internally.\n *\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/xaxis/min-max/\n * Fixed min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.max\n */\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding/\n * Max padding of 0.25 on y axis\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n */\n maxPadding: 0.01,\n /**\n * Deprecated. Use `minRange` instead.\n *\n * @deprecated\n * @type {number}\n * @product highcharts highstock\n * @apioption xAxis.maxZoom\n */\n /**\n * The minimum value of the axis. If `null` the min value is\n * automatically calculated.\n *\n * If the [startOnTick](#yAxis.startOnTick) option is true (default),\n * the `min` value might be rounded down.\n *\n * The automatically calculated minimum value is also affected by\n * [floor](#yAxis.floor), [softMin](#yAxis.softMin),\n * [minPadding](#yAxis.minPadding), [minRange](#yAxis.minRange)\n * as well as [series.threshold](#plotOptions.series.threshold)\n * and [series.softThreshold](#plotOptions.series.softThreshold).\n *\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/xaxis/min-max/\n * Set min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.min\n */\n /**\n * The dash or dot style of the minor grid lines. For possible values,\n * see [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n * @sample {highstock} stock/xaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n minorGridLineDashStyle: 'Solid',\n /**\n * Specific tick interval in axis units for the minor ticks. On a linear\n * axis, if `\"auto\"`, the minor tick interval is calculated as a fifth\n * of the tickInterval. If `null` or `undefined`, minor ticks are not\n * shown.\n *\n * On logarithmic axes, the unit is the power of the value. For example,\n * setting the minorTickInterval to 1 puts one tick on each of 0.1, 1,\n * 10, 100 etc. Setting the minorTickInterval to 0.1 produces 9 ticks\n * between 1 and 10, 10 and 100 etc.\n *\n * If user settings dictate minor ticks to become too dense, they don't\n * make sense, and will be ignored to prevent performance problems.\n *\n * @sample {highcharts} highcharts/yaxis/minortickinterval-null/\n * Null by default\n * @sample {highcharts} highcharts/yaxis/minortickinterval-5/\n * 5 units\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log-auto/\n * \"auto\"\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log/\n * 0.1\n * @sample {highstock} stock/demo/basic-line/\n * Null by default\n * @sample {highstock} stock/xaxis/minortickinterval-auto/\n * \"auto\"\n *\n * @type {number|string|null}\n * @apioption xAxis.minorTickInterval\n */\n /**\n * The pixel length of the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minorticklength/\n * 10px on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * 10px on Y axis\n */\n minorTickLength: 2,\n /**\n * The position of the minor tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/yaxis/minortickposition-outside/\n * Outside by default\n * @sample {highcharts} highcharts/yaxis/minortickposition-inside/\n * Inside\n * @sample {highstock} stock/xaxis/minorticks/\n * Inside\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n minorTickPosition: 'outside',\n /**\n * Enable or disable minor ticks. Unless\n * [minorTickInterval](#xAxis.minorTickInterval) is set, the tick\n * interval is calculated as a fifth of the `tickInterval`.\n *\n * On a logarithmic axis, minor ticks are laid out based on a best\n * guess, attempting to enter approximately 5 minor ticks between\n * each major tick.\n *\n * Prior to v6.0.0, ticks were unabled in auto layout by setting\n * `minorTickInterval` to `\"auto\"`.\n *\n * @productdesc {highcharts}\n * On axes using [categories](#xAxis.categories), minor ticks are not\n * supported.\n *\n * @sample {highcharts} highcharts/yaxis/minorticks-true/\n * Enabled on linear Y axis\n *\n * @type {boolean}\n * @default false\n * @since 6.0.0\n * @apioption xAxis.minorTicks\n */\n /**\n * The pixel width of the minor tick mark.\n *\n * @sample {highcharts} highcharts/yaxis/minortickwidth/\n * 3px width\n * @sample {highstock} stock/xaxis/minorticks/\n * 1px width\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.minorTickWidth\n */\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a min extreme\n * is set using `axis.setExtremes()`, the minPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.01,\n /**\n * The minimum range to display on this axis. The entire axis will not\n * be allowed to span over a smaller interval than this. For example,\n * for a datetime axis the main unit is milliseconds. If minRange is\n * set to 3600000, you can't zoom in more than to one hour.\n *\n * The default minRange for the x axis is five times the smallest\n * interval between any of the data points.\n *\n * On a logarithmic axis, the unit for the minimum range is the power.\n * So a minRange of 1 means that the axis can be zoomed to 10-100,\n * 100-1000, 1000-10000 etc.\n *\n * **Note**: The `minPadding`, `maxPadding`, `startOnTick` and\n * `endOnTick` settings also affect how the extremes of the axis\n * are computed.\n *\n * @sample {highcharts} highcharts/xaxis/minrange/\n * Minimum range of 5\n * @sample {highstock} stock/xaxis/minrange/\n * Max zoom of 6 months overrides user selections\n *\n * @type {number}\n * @apioption xAxis.minRange\n */\n /**\n * The minimum tick interval allowed in axis values. For example on\n * zooming in on an axis with daily data, this can be used to prevent\n * the axis from showing hours. Defaults to the closest distance between\n * two points on the axis.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption xAxis.minTickInterval\n */\n /**\n * The distance in pixels from the plot area to the axis line.\n * A positive offset moves the axis with it's line, labels and ticks\n * away from the plot area. This is typically used when two or more\n * axes are displayed on the same side of the plot. With multiple\n * axes the offset is dynamically adjusted to avoid collision, this\n * can be overridden by setting offset explicitly.\n *\n * @sample {highcharts} highcharts/yaxis/offset/\n * Y axis offset of 70\n * @sample {highcharts} highcharts/yaxis/offset-centered/\n * Axes positioned in the center of the plot\n * @sample {highstock} stock/xaxis/offset/\n * Y axis offset by 70 px\n *\n * @type {number}\n */\n offset: void 0,\n /**\n * Whether to display the axis on the opposite side of the normal. The\n * normal is on the left side for vertical axes and bottom for\n * horizontal, so the opposite sides will be right and top respectively.\n * This is typically used with dual or multiple axes.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @default {highcharts|highstock|highmaps} false\n * @default {gantt} true\n */\n opposite: false,\n /**\n * In an ordinal axis, the points are equally spaced in the chart\n * regardless of the actual time or x distance between them. This means\n * that missing data periods (e.g. nights or weekends for a stock chart)\n * will not take up space in the chart.\n * Having `ordinal: false` will show any gaps created by the `gapSize`\n * setting proportionate to their duration.\n *\n * In stock charts the X axis is ordinal by default, unless\n * the boost module is used and at least one of the series' data length\n * exceeds the [boostThreshold](#series.line.boostThreshold).\n *\n * For an ordinal axis, `minPadding` and `maxPadding` are ignored. Use\n * [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highstock} stock/xaxis/ordinal-true/\n * True by default\n * @sample {highstock} stock/xaxis/ordinal-false/\n * False\n *\n * @see [overscroll](#xAxis.overscroll)\n *\n * @type {boolean}\n * @default true\n * @since 1.1\n * @product highstock\n * @apioption xAxis.ordinal\n */\n /**\n * Additional range on the right side of the xAxis. Works similar to\n * `xAxis.maxPadding`, but value is set in milliseconds. Can be set for\n * both main `xAxis` and the navigator's `xAxis`.\n *\n * @sample {highstock} stock/xaxis/overscroll/\n * One minute overscroll with live data\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @product highstock\n * @apioption xAxis.overscroll\n */\n /**\n * Refers to the index in the [panes](#panes) array. Used for circular\n * gauges and polar charts. When the option is not set then first pane\n * will be used.\n *\n * @sample highcharts/demo/gauge-vu-meter\n * Two gauges with different center\n *\n * @type {number}\n * @product highcharts\n * @apioption xAxis.pane\n */\n /**\n * The zoomed range to display when only defining one or none of `min`\n * or `max`. For example, to show the latest month, a range of one month\n * can be set.\n *\n * @sample {highstock} stock/xaxis/range/\n * Setting a zoomed range when the rangeSelector is disabled\n *\n * @type {number}\n * @product highstock\n * @apioption xAxis.range\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin. If the chart is inverted, the x axis is reversed by\n * default.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default undefined\n * @apioption xAxis.reversed\n */\n reversed: void 0,\n /**\n * This option determines how stacks should be ordered within a group.\n * For example reversed xAxis also reverses stacks, so first series\n * comes last in a group. To keep order like for non-reversed xAxis\n * enable this option.\n *\n * @sample {highcharts} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n * @sample {highstock} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n *\n * @since 6.1.1\n * @product highcharts highstock\n */\n reversedStacks: false,\n /**\n * An optional scrollbar to display on the X axis in response to\n * limiting the minimum and maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar are\n * replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/heatmap-scrollbars/\n * Heatmap with both scrollbars\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @apioption xAxis.scrollbar\n */\n /**\n * Whether to show the axis line and title when the axis has no data.\n *\n * @sample {highcharts} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n * @sample {highstock} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n *\n * @since 1.1\n */\n showEmpty: true,\n /**\n * Whether to show the first tick label.\n *\n * @sample {highcharts} highcharts/xaxis/showfirstlabel-false/\n * Set to false on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n */\n showFirstLabel: true,\n /**\n * Whether to show the last tick label. Defaults to `true` on cartesian\n * charts, and `false` on polar charts.\n *\n * @sample {highcharts} highcharts/xaxis/showlastlabel-true/\n * Set to true on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n *\n * @type {boolean}\n * @default undefined\n * @product highcharts highstock gantt\n */\n showLastLabel: true,\n /**\n * A soft maximum for the axis. If the series data maximum is less than\n * this, the axis will stay at this maximum, but if the series data\n * maximum is higher, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMin\n */\n /**\n * For datetime axes, this decides where to put the tick between weeks.\n * 0 = Sunday, 1 = Monday.\n *\n * @sample {highcharts} highcharts/xaxis/startofweek-monday/\n * Monday by default\n * @sample {highcharts} highcharts/xaxis/startofweek-sunday/\n * Sunday\n * @sample {highstock} stock/xaxis/startofweek-1\n * Monday by default\n * @sample {highstock} stock/xaxis/startofweek-0\n * Sunday\n *\n * @product highcharts highstock gantt\n */\n startOfWeek: 1,\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `minPadding` option to control the axis start.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `startOnTick` is always `false` when\n * the navigator is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n *\n * @since 1.2.0\n */\n startOnTick: false,\n /**\n * The amount of ticks to draw on the axis. This opens up for aligning\n * the ticks of multiple charts or panes within a chart. This option\n * overrides the `tickPixelInterval` option.\n *\n * This option only has an effect on linear axes. Datetime, logarithmic\n * or category axes are not affected.\n *\n * @sample {highcharts} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n * @sample {highstock} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.tickAmount\n */\n /**\n * The interval of the tick marks in axis units. When `undefined`, the\n * tick interval is computed to approximately follow the\n * [tickPixelInterval](#xAxis.tickPixelInterval) on linear and datetime\n * axes. On categorized axes, a `undefined` tickInterval will default to\n * 1, one category. Note that datetime axes are based on milliseconds,\n * so for example an interval of one day is expressed as\n * `24 * 3600 * 1000`.\n *\n * On logarithmic axes, the tickInterval is based on powers, so a\n * tickInterval of 1 means one tick on each of 0.1, 1, 10, 100 etc. A\n * tickInterval of 2 means a tick of 0.1, 10, 1000 etc. A tickInterval\n * of 0.2 puts a tick on 0.1, 0.2, 0.4, 0.6, 0.8, 1, 2, 4, 6, 8, 10, 20,\n * 40 etc.\n *\n *\n * If the tickInterval is too dense for labels to be drawn, Highcharts\n * may remove ticks.\n *\n * If the chart has multiple axes, the [alignTicks](#chart.alignTicks)\n * option may interfere with the `tickInterval` setting.\n *\n * @see [tickPixelInterval](#xAxis.tickPixelInterval)\n * @see [tickPositions](#xAxis.tickPositions)\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickinterval-5/\n * Tick interval of 5 on a linear axis\n * @sample {highstock} stock/xaxis/tickinterval/\n * Tick interval of 0.01 on Y axis\n *\n * @type {number}\n * @apioption xAxis.tickInterval\n */\n /**\n * The pixel length of the main tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/ticklength/\n * 20 px tick length on the X axis\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n */\n tickLength: 10,\n /**\n * If tickInterval is `null` this option sets the approximate pixel\n * interval of the tick marks. Not applicable to categorized axis.\n *\n * The tick interval is also influenced by the [minTickInterval](\n * #xAxis.minTickInterval) option, that, by default prevents ticks from\n * being denser than the data points.\n *\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpixelinterval-50/\n * 50 px on X axis\n * @sample {highstock} stock/xaxis/tickpixelinterval/\n * 200 px on X axis\n */\n tickPixelInterval: 100,\n /**\n * For categorized axes only. If `on` the tick mark is placed in the\n * center of the category, if `between` the tick mark is placed between\n * categories. The default is `between` if the `tickInterval` is 1, else\n * `on`.\n *\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-between/\n * \"between\" by default\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-on/\n * \"on\"\n *\n * @product highcharts gantt\n * @validvalue [\"on\", \"between\"]\n */\n tickmarkPlacement: 'between',\n /**\n * The position of the major tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/xaxis/tickposition-outside/\n * \"outside\" by default\n * @sample {highcharts} highcharts/xaxis/tickposition-inside/\n * \"inside\"\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n tickPosition: 'outside',\n /**\n * A callback function returning array defining where the ticks are\n * laid out on the axis. This overrides the default behaviour of\n * [tickPixelInterval](#xAxis.tickPixelInterval) and [tickInterval](\n * #xAxis.tickInterval). The automatic tick positions are accessible\n * through `this.tickPositions` and can be modified by the callback.\n *\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Highcharts.AxisTickPositionerCallbackFunction}\n * @apioption xAxis.tickPositioner\n */\n /**\n * An array defining where the ticks are laid out on the axis. This\n * overrides the default behaviour of [tickPixelInterval](\n * #xAxis.tickPixelInterval) and [tickInterval](#xAxis.tickInterval).\n *\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Array}\n * @apioption xAxis.tickPositions\n */\n /**\n * The pixel width of the major tick marks. Defaults to 0 on category\n * axes, otherwise 1.\n *\n * In styled mode, the stroke width is given in the `.highcharts-tick`\n * class, but in order for the element to be generated on category axes,\n * the option must be explicitly set to 1.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/\n * 10 px width\n * @sample {highcharts} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n * @sample {highstock} highcharts/css/axis-grid/\n * Styled mode\n *\n * @type {undefined|number}\n * @default {highstock} 1\n * @default {highmaps} 0\n * @apioption xAxis.tickWidth\n */\n /**\n * The axis title, showing next to the axis line.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden by default, but adding an axis title\n * is still possible. X axis and Y axis titles will appear at the bottom\n * and left by default.\n */\n title: {\n /**\n * Alignment of the title relative to the axis values. Possible\n * values are \"low\", \"middle\" or \"high\".\n *\n * @sample {highcharts} highcharts/xaxis/title-align-low/\n * \"low\"\n * @sample {highcharts} highcharts/xaxis/title-align-center/\n * \"middle\" by default\n * @sample {highcharts} highcharts/xaxis/title-align-high/\n * \"high\"\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the Y axis title on top of the axis\n * @sample {highstock} stock/xaxis/title-align/\n * Aligned to \"high\" value\n *\n * @type {Highcharts.AxisTitleAlignValue}\n */\n align: 'middle',\n /**\n * Deprecated. Set the `text` to `undefined` to disable the title.\n *\n * @deprecated\n * @type {boolean}\n * @product highcharts\n * @apioption xAxis.title.enabled\n */\n /**\n * The pixel distance between the axis labels or line and the title.\n * Defaults to 0 for horizontal axes, 10 for vertical\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @apioption xAxis.title.margin\n */\n /**\n * The distance of the axis title from the axis line. By default,\n * this distance is computed from the offset width of the labels,\n * the labels' distance from the axis and the title's margin.\n * However when the offset option is set, it overrides all this.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the axis title on top of the axis\n * @sample {highstock} highcharts/yaxis/title-offset/\n * Place the axis title on top of the Y axis\n *\n * @type {number}\n * @since 2.2.0\n * @apioption xAxis.title.offset\n */\n /**\n * Whether to reserve space for the title when laying out the axis.\n *\n * @type {boolean}\n * @default true\n * @since 5.0.11\n * @product highcharts highstock gantt\n * @apioption xAxis.title.reserveSpace\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 0,\n /**\n * The actual text of the axis title. It can contain basic HTML tags\n * like `b`, `i` and `span` with style.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n * @sample {highstock} stock/xaxis/title-text/\n * Titles for both axes\n *\n * @type {string|null}\n * @apioption xAxis.title.text\n */\n /**\n * Alignment of the text, can be `\"left\"`, `\"right\"` or `\"center\"`.\n * Default alignment depends on the\n * [title.align](xAxis.title.align):\n *\n * Horizontal axes:\n * - for `align` = `\"low\"`, `textAlign` is set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"`, `textAlign` is set to `right`\n *\n * Vertical axes:\n * - for `align` = `\"low\"` and `opposite` = `true`, `textAlign` is\n * set to `right`\n * - for `align` = `\"low\"` and `opposite` = `false`, `textAlign` is\n * set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"` and `opposite` = `true` `textAlign` is\n * set to `left`\n * - for `align` = `\"high\"` and `opposite` = `false` `textAlign` is\n * set to `right`\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.title.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the axis title.\n *\n * @product highcharts highstock gantt\n */\n useHTML: false,\n /**\n * Horizontal pixel offset of the title position.\n *\n * @since 4.1.6\n * @product highcharts highstock gantt\n */\n x: 0,\n /**\n * Vertical pixel offset of the title position.\n *\n * @product highcharts highstock gantt\n */\n y: 0,\n /**\n * CSS styles for the title. If the title text is longer than the\n * axis length, it will wrap to multiple lines by default. This can\n * be customized by setting `textOverflow: 'ellipsis'`, by\n * setting a specific `width` or by setting `whiteSpace: 'nowrap'`.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-title` class.\n *\n * @sample {highcharts} highcharts/xaxis/title-style/\n * Red\n * @sample {highcharts} highcharts/css/axis/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* Palette.neutralColor60 */\n }\n },\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`\n * or `category`. In a datetime axis, the numbers are given in\n * milliseconds, and tick marks are placed on appropriate values like\n * full hours or days. In a category axis, the\n * [point names](#series.line.data.name) of the chart's series are used\n * for categories, if not a [categories](#xAxis.categories) array is\n * defined.\n *\n * @sample {highcharts} highcharts/xaxis/type-linear/\n * Linear\n * @sample {highcharts} highcharts/yaxis/type-log/\n * Logarithmic\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/xaxis/type-log-both/\n * Logarithmic on two axes\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n *\n * @type {Highcharts.AxisTypeValue}\n * @product highcharts gantt\n */\n type: 'linear',\n /**\n * If there are multiple axes on the same side of the chart, the pixel\n * margin between the axes. Defaults to 0 on vertical axes, 15 on\n * horizontal axes.\n *\n * @type {number}\n * @since 7.0.3\n * @apioption xAxis.margin\n */\n /**\n * Applies only when the axis `type` is `category`. When `uniqueNames`\n * is true, points are placed on the X axis according to their names.\n * If the same point name is repeated in the same or another series,\n * the point is placed on the same X position as other points of the\n * same name. When `uniqueNames` is false, the points are laid out in\n * increasing X positions regardless of their names, and the X axis\n * category will take the name of the last point in each position.\n *\n * @sample {highcharts} highcharts/xaxis/uniquenames-true/\n * True by default\n * @sample {highcharts} highcharts/xaxis/uniquenames-false/\n * False\n *\n * @since 4.2.7\n * @product highcharts gantt\n */\n uniqueNames: true,\n /**\n * Datetime axis only. An array determining what time intervals the\n * ticks are allowed to fall on. Each array item is an array where the\n * first value is the time unit and the second value another array of\n * allowed multiples.\n *\n * Defaults to:\n * ```js\n * units: [[\n * 'millisecond', // unit name\n * [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n * ], [\n * 'second',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'minute',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'hour',\n * [1, 2, 3, 4, 6, 8, 12]\n * ], [\n * 'day',\n * [1, 2]\n * ], [\n * 'week',\n * [1, 2]\n * ], [\n * 'month',\n * [1, 2, 3, 4, 6]\n * ], [\n * 'year',\n * null\n * ]]\n * ```\n *\n * @type {Array|null)>>}\n * @product highcharts highstock gantt\n * @apioption xAxis.units\n */\n /**\n * Whether axis, including axis title, line, ticks and labels, should\n * be visible.\n *\n * @since 4.1.9\n * @product highcharts highstock gantt\n */\n visible: true,\n /**\n * Color of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-minor-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #f2f2f2\n */\n minorGridLineColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * Width of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinewidth/\n * 2px lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinewidth/\n * 2px lines from Y axis\n */\n minorGridLineWidth: 1,\n /**\n * Color for the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minortickcolor/\n * Black tick marks on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * Black tick marks on Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #999999\n */\n minorTickColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The color of the line marking the axis itself.\n *\n * In styled mode, the line stroke is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A red line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linecolor/\n * A red line on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n lineColor: \"#ccd6eb\" /* Palette.highlightColor20 */,\n /**\n * The width of the line marking the axis itself.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A 1px line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linewidth/\n * A 2px line on X axis\n *\n * @default {highcharts|highstock} 1\n * @default {highmaps} 0\n */\n lineWidth: 1,\n /**\n * Color of the grid lines extending the ticks across the plot area.\n *\n * In styled mode, the stroke is given in the `.highcharts-grid-line`\n * class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the grid lines are hidden by default.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinecolor/\n * Green lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinecolor/\n * Green lines\n *\n * @type {Highcharts.ColorType}\n * @default #e6e6e6\n */\n gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The width of the grid lines extending the ticks across the plot area.\n * Defaults to 1 on the Y axis and 0 on the X axis, except for 3d\n * charts.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinewidth/\n * 2px lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinewidth/\n * 2px lines\n *\n * @type {number}\n * @apioption xAxis.gridLineWidth\n */\n gridLineWidth: void 0,\n /**\n * The height as the vertical axis. If it's a number, it is\n * interpreted as pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the total plot height.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.height\n */\n /**\n * The width as the horizontal axis. If it's a number, it is interpreted\n * as pixels.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the total plot width.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.width\n */\n /**\n * Color for the main tick marks.\n *\n * In styled mode, the stroke is given in the `.highcharts-tick`\n * class.\n *\n * @sample {highcharts} highcharts/xaxis/tickcolor/\n * Red ticks on X axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n tickColor: \"#ccd6eb\" /* Palette.highlightColor20 */\n // tickWidth: 1\n };\n /**\n * The Y axis or value axis. Normally this is the vertical axis,\n * though if the chart is inverted this is the horizontal axis.\n * In case of multiple axes, the yAxis node is an array of\n * configuration objects.\n *\n * See [the Axis object](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @excluding currentDateIndicator,ordinal,overscroll\n * @optionparent yAxis\n */\n AxisDefaults.defaultYAxisOptions = {\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`,\n * `category` or `treegrid`. Defaults to `treegrid` for Gantt charts,\n * `linear` for other chart types.\n *\n * In a datetime axis, the numbers are given in milliseconds, and tick\n * marks are placed on appropriate values, like full hours or days. In a\n * category or treegrid axis, the [point names](#series.line.data.name)\n * of the chart's series are used for categories, if a\n * [categories](#xAxis.categories) array is not defined.\n *\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n * @sample {gantt} gantt/treegrid-axis/demo\n * Treegrid axis\n *\n * @type {Highcharts.AxisTypeValue}\n * @default {highcharts} linear\n * @default {gantt} treegrid\n * @product highcharts gantt\n * @apioption yAxis.type\n */\n /**\n * The height of the Y axis. If it's a number, it is interpreted as\n * pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the total plot height.\n *\n * @see [yAxis.top](#yAxis.top)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.height\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the maximum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max colors\n *\n * @type {Highcharts.ColorType}\n * @default #003399\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.maxColor\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the minimum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max color\n *\n * @type {Highcharts.ColorType}\n * @default #e6ebf5\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.minColor\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} true\n * @apioption yAxis.reversed\n */\n /**\n * If `true`, the first series in a stack will be drawn on top in a\n * positive, non-reversed Y axis. If `false`, the first series is in\n * the base of the stack.\n *\n * @sample {highcharts} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n * @sample {highstock} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n *\n * @type {boolean}\n * @default true\n * @since 3.0.10\n * @product highcharts highstock\n * @apioption yAxis.reversedStacks\n */\n reversedStacks: true,\n /**\n * Solid gauge series only. Color stops for the solid gauge. Use this\n * in cases where a linear gradient between a `minColor` and `maxColor`\n * is not sufficient. The stops is an array of tuples, where the first\n * item is a float between 0 and 1 assigning the relative position in\n * the gradient, and the second item is the color.\n *\n * For solid gauges, the Y axis also inherits the concept of\n * [data classes](https://api.highcharts.com/highmaps#colorAxis.dataClasses)\n * from the Highmaps color axis.\n *\n * @sample {highcharts} highcharts/demo/gauge-solid/\n * Gauge with stops\n *\n * @see [minColor](#yAxis.minColor)\n * @see [maxColor](#yAxis.maxColor)\n *\n * @type {Array>}\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.stops\n */\n /**\n * The pixel width of the major tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/ 10 px width\n * @sample {highstock} stock/xaxis/ticks/ Formatted ticks on X axis\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption yAxis.tickWidth\n */\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n */\n endOnTick: true,\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `maxPadding`,\n * so if the data is tangent to the threshold, `maxPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding-02/\n * Max padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n maxPadding: 0.05,\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `minPadding`,\n * so if the data is tangent to the threshold, `minPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.05,\n /**\n * @productdesc {highstock}\n * In Highcharts Stock 1.x, the Y axis was placed\n * on the left side by default.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @type {boolean}\n * @default {highstock} true\n * @default {highcharts} false\n * @product highstock highcharts gantt\n * @apioption yAxis.opposite\n */\n /**\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n */\n tickPixelInterval: 72,\n /**\n * Whether to show the last tick label.\n *\n * @productdesc {highcharts|gantt}\n * Defaults to `true` on cartesian charts, and `false` on polar charts.\n *\n * @productdesc {highstock}\n * Defaults to `true` for categorized yAxis and `false` for other types\n * of yAxis.\n *\n * @default undefined\n */\n showLastLabel: true,\n /**\n * @extends xAxis.labels\n */\n labels: {\n /**\n * Angular gauges and solid gauges only.\n * The label's pixel distance from the perimeter of the plot area.\n *\n * Since v7.1.2: If it's a percentage string, it is interpreted the\n * same as [series.radius](#plotOptions.gauge.radius), so label can be\n * aligned under the gauge's shape.\n *\n * @sample {highcharts} highcharts/yaxis/labels-distance/\n * Labels centered under the arc\n *\n * @type {number|string}\n * @default -25\n * @product highcharts\n * @apioption yAxis.labels.distance\n */\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. For polar and radial axis consider the use\n * of the [distance](#yAxis.labels.distance) option.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @default {highcharts} 3\n * @default {highstock} -2\n * @default {highmaps} 3\n * @apioption yAxis.labels.y\n */\n /**\n * What part of the string the given position is anchored to. Can\n * be one of `\"left\"`, `\"center\"` or `\"right\"`. The exact position\n * also depends on the `labels.x` setting.\n *\n * Angular gauges and solid gauges defaults to `\"center\"`.\n * Solid gauges with two labels have additional option `\"auto\"`\n * for automatic horizontal and vertical alignment.\n *\n * @see [yAxis.labels.distance](#yAxis.labels.distance)\n *\n * @sample {highcharts} highcharts/yaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge labels auto aligned\n *\n * @type {Highcharts.AlignValue}\n * @default {highstock} right\n * @apioption yAxis.labels.align\n */\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis. Defaults to -15 for left axis, 15 for\n * right axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: -8\n },\n /**\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @type {Highcharts.ColorType}\n * @apioption yAxis.lineColor\n */\n /**\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.max\n */\n /**\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.min\n */\n /**\n * An optional scrollbar to display on the Y axis in response to\n * limiting the minimum an maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar\n * are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Scrollbar on the Y axis\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @excluding height\n * @apioption yAxis.scrollbar\n */\n /**\n * Enable the scrollbar on the Y axis.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Enabled on Y axis\n *\n * @type {boolean}\n * @default false\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.enabled\n */\n /**\n * Pixel margin between the scrollbar and the axis elements.\n *\n * @type {number}\n * @default 10\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.margin\n */\n /* eslint-disable highcharts/doclet-apioption-last */\n /**\n * Defines the position of the scrollbar. By default, it is positioned\n * on the opposite of the main axis (right side of the chart).\n * However, in the case of RTL languages could be set to `false`\n * which positions the scrollbar on the left.\n *\n * Works only for vertical axes.\n * This means yAxis in a non-inverted chart and xAxis in the inverted.\n *\n * @sample stock/yaxis/scrollbar-opposite/\n * A scrollbar not on the opposite side\n *\n * @type {boolean}\n * @default true\n * @since 9.3.0\n *\n * @apioption yAxis.scrollbar.opposite\n * @apioption xAxis.scrollbar.opposite\n *\n */\n /* eslint-enable highcharts/doclet-apioption-last */\n /**\n * Whether to show the scrollbar when it is fully zoomed out at max\n * range. Setting it to `false` on the Y axis makes the scrollbar stay\n * hidden until the user zooms in, like common in browsers.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.showFull\n */\n /**\n * The width of a vertical scrollbar or height of a horizontal\n * scrollbar. Defaults to 20 on touch devices.\n *\n * @type {number}\n * @default 14\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.size\n */\n /**\n * Z index of the scrollbar elements.\n *\n * @type {number}\n * @default 3\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.zIndex\n */\n /**\n * A soft maximum for the axis. If the series data maximum is less\n * than this, the axis will stay at this maximum, but if the series\n * data maximum is higher, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMin\n */\n /**\n * Defines the horizontal alignment of the stack total label. Can be one\n * of `\"left\"`, `\"center\"` or `\"right\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-left/\n * Aligned to the left\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-center/\n * Aligned in center\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-right/\n * Aligned to the right\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.align\n */\n /**\n * A format string for the data label. Available variables are the same\n * as for `formatter`.\n *\n * @type {string}\n * @default {total}\n * @since 3.0.2\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.format\n */\n /**\n * Rotation of the labels in degrees.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-rotation/\n * Labels rotated 45°\n *\n * @type {number}\n * @default 0\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.rotation\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed with regards to the stack, `textAlign`\n * determines how the text is aligned against its anchor point. Possible\n * values are `\"left\"`, `\"center\"` and `\"right\"`. The default value is\n * calculated at runtime and depends on orientation and whether the\n * stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-textalign-left/\n * Label in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.useHTML\n */\n /**\n * Defines the vertical alignment of the stack total label. Can be one\n * of `\"top\"`, `\"middle\"` or `\"bottom\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-top/\n * Vertically aligned top\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-middle/\n * Vertically aligned middle\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-bottom/\n * Vertically aligned bottom\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.verticalAlign\n */\n /**\n * The x position offset of the label relative to the left of the\n * stacked bar. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-x/\n * Stack total labels with x offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.x\n */\n /**\n * The y position offset of the label relative to the tick position\n * on the axis. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-y/\n * Stack total labels with y offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.y\n */\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `maxPadding` option to control the axis start.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n startOnTick: true,\n title: {\n /**\n * The pixel distance between the axis labels and the title.\n * Positive values are outside the axis line, negative are inside.\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @default 40\n * @apioption yAxis.title.margin\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 270,\n /**\n * The actual text of the axis title. Horizontal texts can contain\n * HTML, but rotated texts are painted using vector techniques and\n * must be clean text. The Y axis title is disabled by setting the\n * `text` option to `undefined`.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n *\n * @type {string|null}\n * @default {highcharts} Values\n * @default {highstock} undefined\n * @product highcharts highstock gantt\n */\n text: 'Values'\n },\n /**\n * The top position of the Y axis. If it's a number, it is interpreted\n * as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the plot height, offset from plot area top.\n *\n * @see [yAxis.height](#yAxis.height)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.top\n */\n /**\n * The stack labels show the total value for each bar in a stacked\n * column or bar chart. The label will be placed on top of positive\n * columns and below negative columns. In case of an inverted column\n * chart or a bar chart the label is placed to the right of positive\n * bars and to the left of negative bars.\n *\n * @product highcharts\n */\n stackLabels: {\n /**\n * Enable or disable the initial animation when a series is\n * displayed for the `stackLabels`. The animation can also be set as\n * a configuration object. Please note that this option only\n * applies to the initial animation.\n * For other animations, see [chart.animation](#chart.animation)\n * and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n * @type {boolean|Partial}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds.\n * Set to `0` renders stackLabel immediately.\n * As `undefined` inherits defer time from the [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation.defer\n */\n /**\n * Allow the stack labels to overlap.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-allowoverlap-false/\n * Default false\n *\n * @since 5.0.13\n * @product highcharts\n */\n allowOverlap: false,\n /**\n * The background color or gradient for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.backgroundColor\n */\n /**\n * The border color for the stack label. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderColor\n */\n /**\n * The border radius in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderRadius\n */\n /**\n * The border width in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderWidth\n */\n /**\n * Enable or disable the stack total labels.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled/\n * Enabled stack total labels\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled-waterfall/\n * Enabled stack labels in waterfall chart\n *\n * @since 2.1.5\n * @product highcharts\n */\n enabled: false,\n /**\n * Whether to hide stack labels that are outside the plot area.\n * By default, the stack label is moved\n * inside the plot area according to the\n * [overflow](/highcharts/#yAxis/stackLabels/overflow)\n * option.\n *\n * @type {boolean}\n * @since 7.1.3\n */\n crop: true,\n /**\n * How to handle stack total labels that flow outside the plot area.\n * The default is set to `\"justify\"`,\n * which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display stack labels outside the plot area,\n * set `crop` to `false` and `overflow` to `\"allow\"`.\n *\n * @sample highcharts/yaxis/stacklabels-overflow/\n * Stack labels flows outside the plot area.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @since 7.1.3\n */\n overflow: 'justify',\n /* eslint-disable valid-jsdoc */\n /**\n * Callback JavaScript function to format the label. The value is\n * given by `this.total`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-formatter/\n * Added units to stack total value\n *\n * @type {Highcharts.FormatterCallbackFunction}\n * @since 2.1.5\n * @product highcharts\n */\n formatter: function () {\n var numberFormatter = this.axis.chart.numberFormatter;\n /* eslint-enable valid-jsdoc */\n return numberFormatter(this.total || 0, -1);\n },\n /**\n * CSS styles for the label.\n *\n * In styled mode, the styles are set in the\n * `.highcharts-stack-label` class.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-style/\n * Red stack total labels\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1.5\n * @product highcharts\n */\n style: {\n /** @internal */\n color: \"#000000\" /* Palette.neutralColor100 */,\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n textOutline: '1px contrast'\n }\n },\n gridLineWidth: 1,\n lineWidth: 0\n // tickWidth: 0\n };\n /**\n * The Z axis or depth axis for 3D plots.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @sample {highcharts} highcharts/3d/scatter-zaxis-categories/\n * Z-Axis with Categories\n * @sample {highcharts} highcharts/3d/scatter-zaxis-grid/\n * Z-Axis with styling\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @since 5.0.0\n * @product highcharts\n * @excluding breaks, crosshair, height, left, lineColor, lineWidth,\n * nameToX, showEmpty, top, width\n * @apioption zAxis\n */\n // This variable extends the defaultOptions for left axes.\n AxisDefaults.defaultLeftAxisOptions = {\n labels: {\n x: -15\n },\n title: {\n rotation: 270\n }\n };\n // This variable extends the defaultOptions for right axes.\n AxisDefaults.defaultRightAxisOptions = {\n labels: {\n x: 15\n },\n title: {\n rotation: 90\n }\n };\n // This variable extends the defaultOptions for bottom axes.\n AxisDefaults.defaultBottomAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined,\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n // This variable extends the defaultOptions for top axes.\n AxisDefaults.defaultTopAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n })(AxisDefaults || (AxisDefaults = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return AxisDefaults;\n });\n _registerModule(_modules, 'Core/Foundation.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n isFunction = U.isFunction,\n objectEach = U.objectEach,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class Namespace\n *\n * */\n var Foundation;\n (function (Foundation) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Register event options. If an event handler is set on the options, it\n * should be subject to Chart.update, Axis.update and Series.update. This is\n * contrary to general handlers that are set directly using addEvent either\n * on the class or on the instance. #6538, #6943, #10861.\n * @private\n */\n function registerEventOptions(component, options) {\n // A lookup over those events that are added by _options_ (not\n // programmatically). These are updated through .update()\n component.eventOptions = component.eventOptions || {};\n // Register event listeners\n objectEach(options.events, function (event, eventType) {\n // If event does not exist, or is changed by the .update()\n // function\n if (component.eventOptions[eventType] !== event) {\n // Remove existing if set by option\n if (component.eventOptions[eventType]) {\n removeEvent(component, eventType, component.eventOptions[eventType]);\n delete component.eventOptions[eventType];\n }\n if (isFunction(event)) {\n component.eventOptions[eventType] = event;\n addEvent(component, eventType, event);\n }\n }\n });\n }\n Foundation.registerEventOptions = registerEventOptions;\n })(Foundation || (Foundation = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return Foundation;\n });\n _registerModule(_modules, 'Core/Axis/Tick.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (F, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Tick class.\n *\n * @class\n * @name Highcharts.Tick\n *\n * @param {Highcharts.Axis} axis\n * The axis of the tick.\n *\n * @param {number} pos\n * The position of the tick on the axis in terms of axis values.\n *\n * @param {string} [type]\n * The type of tick, either 'minor' or an empty string\n *\n * @param {boolean} [noLabel=false]\n * Whether to disable the label or not. Defaults to false.\n *\n * @param {Object} [parameters]\n * Optional parameters for the tick.\n */\n var Tick = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tick(axis, pos, type, noLabel, parameters) {\n this.isNew = true;\n this.isNewLabel = true;\n /**\n * The related axis of the tick.\n * @name Highcharts.Tick#axis\n * @type {Highcharts.Axis}\n */\n this.axis = axis;\n /**\n * The logical position of the tick on the axis in terms of axis values.\n * @name Highcharts.Tick#pos\n * @type {number}\n */\n this.pos = pos;\n /**\n * The tick type, which can be `\"minor\"`, or an empty string.\n * @name Highcharts.Tick#type\n * @type {string}\n */\n this.type = type || '';\n this.parameters = parameters || {};\n /**\n * The mark offset of the tick on the axis. Usually `undefined`, numeric\n * for grid axes.\n * @name Highcharts.Tick#tickmarkOffset\n * @type {number|undefined}\n */\n this.tickmarkOffset = this.parameters.tickmarkOffset;\n this.options = this.parameters.options;\n fireEvent(this, 'init');\n if (!type && !noLabel) {\n this.addLabel();\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Write the tick label.\n *\n * @private\n * @function Highcharts.Tick#addLabel\n */\n Tick.prototype.addLabel = function () {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n chart = axis.chart,\n categories = axis.categories,\n log = axis.logarithmic,\n names = axis.names,\n pos = tick.pos,\n labelOptions = pick(tick.options && tick.options.labels,\n options.labels),\n tickPositions = axis.tickPositions,\n isFirst = pos === tickPositions[0],\n isLast = pos === tickPositions[tickPositions.length - 1],\n animateLabels = (!labelOptions.step || labelOptions.step === 1) &&\n axis.tickInterval === 1,\n tickPositionInfo = tickPositions.info;\n var label = tick.label,\n dateTimeLabelFormat,\n dateTimeLabelFormats,\n i;\n // The context value\n var value = this.parameters.category || (categories ?\n pick(categories[pos],\n names[pos],\n pos) :\n pos);\n if (log && isNumber(value)) {\n value = correctFloat(log.lin2log(value));\n }\n // Set the datetime label format. If a higher rank is set for this\n // position, use that. If not, use the general format.\n if (axis.dateTime) {\n if (tickPositionInfo) {\n dateTimeLabelFormats = chart.time.resolveDTLFormat(options.dateTimeLabelFormats[(!options.grid &&\n tickPositionInfo.higherRanks[pos]) ||\n tickPositionInfo.unitName]);\n dateTimeLabelFormat = dateTimeLabelFormats.main;\n }\n else if (isNumber(value)) { // #1441\n dateTimeLabelFormat = axis.dateTime.getXDateFormat(value, options.dateTimeLabelFormats ||\n {});\n }\n }\n // set properties for access in render method\n /**\n * True if the tick is the first one on the axis.\n * @name Highcharts.Tick#isFirst\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isFirst = isFirst;\n /**\n * True if the tick is the last one on the axis.\n * @name Highcharts.Tick#isLast\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isLast = isLast;\n // Get the string\n var ctx = {\n axis: axis,\n chart: chart,\n dateTimeLabelFormat: dateTimeLabelFormat,\n isFirst: isFirst,\n isLast: isLast,\n pos: pos,\n tick: tick,\n tickPositionInfo: tickPositionInfo,\n value: value\n };\n // Fire an event that allows modifying the context for use in\n // `labels.format` and `labels.formatter`.\n fireEvent(this, 'labelFormat', ctx);\n // Label formatting. When `labels.format` is given, we first run the\n // defaultFormatter and append the result to the context as `text`.\n // Handy for adding prefix or suffix while keeping default number\n // formatting.\n var labelFormatter = function (ctx) {\n if (labelOptions.formatter) {\n return labelOptions.formatter.call(ctx,\n ctx);\n }\n if (labelOptions.format) {\n ctx.text = axis.defaultLabelFormatter.call(ctx, ctx);\n return F.format(labelOptions.format, ctx, chart);\n }\n return axis.defaultLabelFormatter.call(ctx, ctx);\n };\n var str = labelFormatter.call(ctx,\n ctx);\n // Set up conditional formatting based on the format list if existing.\n var list = dateTimeLabelFormats && dateTimeLabelFormats.list;\n if (list) {\n tick.shortenLabel = function () {\n for (i = 0; i < list.length; i++) {\n extend(ctx, { dateTimeLabelFormat: list[i] });\n label.attr({\n text: labelFormatter.call(ctx, ctx)\n });\n if (label.getBBox().width <\n axis.getSlotWidth(tick) - 2 *\n labelOptions.padding) {\n return;\n }\n }\n label.attr({\n text: ''\n });\n };\n }\n else {\n // #15692\n tick.shortenLabel = void 0;\n }\n // Call only after first render\n if (animateLabels && axis._addedPlotLB) {\n tick.moveLabel(str, labelOptions);\n }\n // First call\n if (!defined(label) && !tick.movedLabel) {\n /**\n * The rendered text label of the tick.\n * @name Highcharts.Tick#label\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.label = label = tick.createLabel({ x: 0, y: 0 }, str, labelOptions);\n // Base value to detect change for new calls to getBBox\n tick.rotation = 0;\n // update\n }\n else if (label && label.textStr !== str && !animateLabels) {\n // When resetting text, also reset the width if dynamically set\n // (#8809)\n if (label.textWidth &&\n !labelOptions.style.width &&\n !label.styles.width) {\n label.css({ width: null });\n }\n label.attr({ text: str });\n label.textPxLength = label.getBBox().width;\n }\n };\n /**\n * Render and return the label of the tick.\n *\n * @private\n * @function Highcharts.Tick#createLabel\n */\n Tick.prototype.createLabel = function (xy, str, labelOptions) {\n var axis = this.axis,\n chart = axis.chart,\n label = defined(str) && labelOptions.enabled ?\n chart.renderer\n .text(str,\n xy.x,\n xy.y,\n labelOptions.useHTML)\n .add(axis.labelGroup) :\n null;\n // Un-rotated length\n if (label) {\n // Without position absolute, IE export sometimes is wrong\n if (!chart.styledMode) {\n label.css(merge(labelOptions.style));\n }\n label.textPxLength = label.getBBox().width;\n }\n return label;\n };\n /**\n * Destructor for the tick prototype\n *\n * @private\n * @function Highcharts.Tick#destroy\n */\n Tick.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Gets the x and y positions for ticks in terms of pixels.\n *\n * @private\n * @function Highcharts.Tick#getPosition\n *\n * @param {boolean} horiz\n * Whether the tick is on an horizontal axis or not.\n *\n * @param {number} tickPos\n * Position of the tick.\n *\n * @param {number} tickmarkOffset\n * Tickmark offset for all ticks.\n *\n * @param {boolean} [old]\n * Whether the axis has changed or not.\n *\n * @return {Highcharts.PositionObject}\n * The tick position.\n *\n * @emits Highcharts.Tick#event:afterGetPosition\n */\n Tick.prototype.getPosition = function (horiz, tickPos, tickmarkOffset, old) {\n var axis = this.axis,\n chart = axis.chart,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n pos = {\n x: horiz ?\n correctFloat(axis.translate(tickPos + tickmarkOffset,\n void 0,\n void 0,\n old) +\n axis.transB) :\n (axis.left +\n axis.offset +\n (axis.opposite ?\n (((old && chart.oldChartWidth) ||\n chart.chartWidth) -\n axis.right -\n axis.left) :\n 0)),\n y: horiz ?\n (cHeight -\n axis.bottom +\n axis.offset -\n (axis.opposite ? axis.height : 0)) :\n correctFloat(cHeight -\n axis.translate(tickPos + tickmarkOffset,\n void 0,\n void 0,\n old) -\n axis.transB)\n };\n // Chrome workaround for #10516\n pos.y = clamp(pos.y, -1e5, 1e5);\n fireEvent(this, 'afterGetPosition', { pos: pos });\n return pos;\n };\n /**\n * Get the x, y position of the tick label\n * @private\n */\n Tick.prototype.getLabelPosition = function (x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {\n var axis = this.axis,\n transA = axis.transA,\n reversed = ( // #7911\n axis.isLinked && axis.linkedParent ?\n axis.linkedParent.reversed :\n axis.reversed),\n staggerLines = axis.staggerLines,\n rotCorr = axis.tickRotCorr || { x: 0,\n y: 0 }, \n // Adjust for label alignment if we use reserveSpace: true (#5286)\n labelOffsetCorrection = (!horiz && !axis.reserveSpaceDefault ?\n -axis.labelOffset * (axis.labelAlign === 'center' ? 0.5 : 1) :\n 0),\n pos = {};\n var yOffset,\n line;\n if (axis.side === 0) {\n yOffset = label.rotation ? -8 : -label.getBBox().height;\n }\n else if (axis.side === 2) {\n yOffset = rotCorr.y + 8;\n }\n else {\n // #3140, #3140\n yOffset = Math.cos(label.rotation * deg2rad) *\n (rotCorr.y - label.getBBox(false, 0).height / 2);\n }\n if (defined(labelOptions.y)) {\n yOffset = axis.side === 0 && axis.horiz ?\n labelOptions.y + yOffset :\n labelOptions.y;\n }\n x = x +\n labelOptions.x +\n labelOffsetCorrection +\n rotCorr.x -\n (tickmarkOffset && horiz ?\n tickmarkOffset * transA * (reversed ? -1 : 1) :\n 0);\n y = y + yOffset - (tickmarkOffset && !horiz ?\n tickmarkOffset * transA * (reversed ? 1 : -1) : 0);\n // Correct for staggered labels\n if (staggerLines) {\n line = (index / (step || 1) % staggerLines);\n if (axis.opposite) {\n line = staggerLines - line - 1;\n }\n y += line * (axis.labelOffset / staggerLines);\n }\n pos.x = x;\n pos.y = Math.round(y);\n fireEvent(this, 'afterGetLabelPosition', { pos: pos, tickmarkOffset: tickmarkOffset, index: index });\n return pos;\n };\n /**\n * Get the offset height or width of the label\n *\n * @private\n * @function Highcharts.Tick#getLabelSize\n */\n Tick.prototype.getLabelSize = function () {\n return this.label ?\n this.label.getBBox()[this.axis.horiz ? 'height' : 'width'] :\n 0;\n };\n /**\n * Extendible method to return the path of the marker\n * @private\n */\n Tick.prototype.getMarkPath = function (x, y, tickLength, tickWidth, horiz, renderer) {\n return renderer.crispLine([[\n 'M',\n x,\n y\n ], [\n 'L',\n x + (horiz ? 0 : -tickLength),\n y + (horiz ? tickLength : 0)\n ]], tickWidth);\n };\n /**\n * Handle the label overflow by adjusting the labels to the left and right\n * edge, or hide them if they collide into the neighbour label.\n *\n * @private\n * @function Highcharts.Tick#handleOverflow\n */\n Tick.prototype.handleOverflow = function (xy) {\n var tick = this,\n axis = this.axis,\n labelOptions = axis.options.labels,\n pxPos = xy.x,\n chartWidth = axis.chart.chartWidth,\n spacing = axis.chart.spacing,\n leftBound = pick(axis.labelLeft,\n Math.min(axis.pos,\n spacing[3])),\n rightBound = pick(axis.labelRight,\n Math.max(!axis.isRadial ? axis.pos + axis.len : 0,\n chartWidth - spacing[1])),\n label = this.label,\n rotation = this.rotation,\n factor = {\n left: 0,\n center: 0.5,\n right: 1\n }[axis.labelAlign || label.attr('align')],\n labelWidth = label.getBBox().width,\n slotWidth = axis.getSlotWidth(tick),\n xCorrection = factor,\n css = {};\n var modifiedSlotWidth = slotWidth,\n goRight = 1,\n leftPos,\n rightPos,\n textWidth;\n // Check if the label overshoots the chart spacing box. If it does, move\n // it. If it now overshoots the slotWidth, add ellipsis.\n if (!rotation && labelOptions.overflow === 'justify') {\n leftPos = pxPos - factor * labelWidth;\n rightPos = pxPos + (1 - factor) * labelWidth;\n if (leftPos < leftBound) {\n modifiedSlotWidth =\n xy.x + modifiedSlotWidth * (1 - factor) - leftBound;\n }\n else if (rightPos > rightBound) {\n modifiedSlotWidth =\n rightBound - xy.x + modifiedSlotWidth * factor;\n goRight = -1;\n }\n modifiedSlotWidth = Math.min(slotWidth, modifiedSlotWidth); // #4177\n if (modifiedSlotWidth < slotWidth && axis.labelAlign === 'center') {\n xy.x += (goRight *\n (slotWidth -\n modifiedSlotWidth -\n xCorrection * (slotWidth - Math.min(labelWidth, modifiedSlotWidth))));\n }\n // If the label width exceeds the available space, set a text width\n // to be picked up below. Also, if a width has been set before, we\n // need to set a new one because the reported labelWidth will be\n // limited by the box (#3938).\n if (labelWidth > modifiedSlotWidth ||\n (axis.autoRotation && (label.styles || {}).width)) {\n textWidth = modifiedSlotWidth;\n }\n // Add ellipsis to prevent rotated labels to be clipped against the edge\n // of the chart\n }\n else if (rotation < 0 &&\n pxPos - factor * labelWidth < leftBound) {\n textWidth = Math.round(pxPos / Math.cos(rotation * deg2rad) - leftBound);\n }\n else if (rotation > 0 &&\n pxPos + factor * labelWidth > rightBound) {\n textWidth = Math.round((chartWidth - pxPos) /\n Math.cos(rotation * deg2rad));\n }\n if (textWidth) {\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else {\n css.width = Math.floor(textWidth) + 'px';\n if (!(labelOptions.style || {}).textOverflow) {\n css.textOverflow = 'ellipsis';\n }\n label.css(css);\n }\n }\n };\n /**\n * Try to replace the label if the same one already exists.\n *\n * @private\n * @function Highcharts.Tick#moveLabel\n */\n Tick.prototype.moveLabel = function (str, labelOptions) {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var moved = false,\n labelPos,\n xPos,\n yPos;\n if (label && label.textStr === str) {\n tick.movedLabel = label;\n moved = true;\n delete tick.label;\n }\n else { // Find a label with the same string\n objectEach(axis.ticks, function (currentTick) {\n if (!moved &&\n !currentTick.isNew &&\n currentTick !== tick &&\n currentTick.label &&\n currentTick.label.textStr === str) {\n tick.movedLabel = currentTick.label;\n moved = true;\n currentTick.labelPos = tick.movedLabel.xy;\n delete currentTick.label;\n }\n });\n }\n // Create new label if the actual one is moved\n if (!moved && (tick.labelPos || label)) {\n labelPos = tick.labelPos || label.xy;\n xPos = axis.horiz ?\n (reversed ? 0 : axis.width + axis.left) : labelPos.x;\n yPos = axis.horiz ?\n labelPos.y : (reversed ? (axis.width + axis.left) : 0);\n tick.movedLabel = tick.createLabel({ x: xPos, y: yPos }, str, labelOptions);\n if (tick.movedLabel) {\n tick.movedLabel.attr({ opacity: 0 });\n }\n }\n };\n /**\n * Put everything in place\n *\n * @private\n * @param {number} index\n *\n * @param {boolean} [old]\n * Use old coordinates to prepare an animation into new position\n *\n * @param {number} [opacity]\n */\n Tick.prototype.render = function (index, old, opacity) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n pos = tick.pos,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n xy = tick.getPosition(horiz,\n pos,\n tickmarkOffset,\n old),\n x = xy.x,\n y = xy.y,\n reverseCrisp = ((horiz && x === axis.pos + axis.len) ||\n (!horiz && y === axis.pos)) ? -1 : 1; // #1480, #1687\n var labelOpacity = pick(opacity,\n tick.label && tick.label.newOpacity, // #15528\n 1);\n opacity = pick(opacity, 1);\n this.isActive = true;\n // Create the grid line\n this.renderGridLine(old, opacity, reverseCrisp);\n // create the tick mark\n this.renderMark(xy, opacity, reverseCrisp);\n // the label is created on init - now move it into place\n this.renderLabel(xy, old, labelOpacity, index);\n tick.isNew = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Renders the gridLine.\n *\n * @private\n * @function Highcharts.Tick#renderGridLine\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the grid line\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderGridLine = function (old, opacity, reverseCrisp) {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n attribs = {},\n pos = tick.pos,\n type = tick.type,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n renderer = axis.chart.renderer;\n var gridLine = tick.gridLine,\n gridLinePath,\n gridLineWidth = options.gridLineWidth,\n gridLineColor = options.gridLineColor,\n dashStyle = options.gridLineDashStyle;\n if (tick.type === 'minor') {\n gridLineWidth = options.minorGridLineWidth;\n gridLineColor = options.minorGridLineColor;\n dashStyle = options.minorGridLineDashStyle;\n }\n if (!gridLine) {\n if (!axis.chart.styledMode) {\n attribs.stroke = gridLineColor;\n attribs['stroke-width'] = gridLineWidth || 0;\n attribs.dashstyle = dashStyle;\n }\n if (!type) {\n attribs.zIndex = 1;\n }\n if (old) {\n opacity = 0;\n }\n /**\n * The rendered grid line of the tick.\n * @name Highcharts.Tick#gridLine\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.gridLine = gridLine = renderer.path()\n .attr(attribs)\n .addClass('highcharts-' + (type ? type + '-' : '') + 'grid-line')\n .add(axis.gridGroup);\n }\n if (gridLine) {\n gridLinePath = axis.getPlotLinePath({\n value: pos + tickmarkOffset,\n lineWidth: gridLine.strokeWidth() * reverseCrisp,\n force: 'pass',\n old: old,\n acrossPanes: false // #18025\n });\n // If the parameter 'old' is set, the current call will be followed\n // by another call, therefore do not do any animations this time\n if (gridLinePath) {\n gridLine[old || tick.isNew ? 'attr' : 'animate']({\n d: gridLinePath,\n opacity: opacity\n });\n }\n }\n };\n /**\n * Renders the tick mark.\n *\n * @private\n * @function Highcharts.Tick#renderMark\n * @param {Highcharts.PositionObject} xy The position vector of the mark\n * @param {number} opacity The opacity of the mark\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderMark = function (xy, opacity, reverseCrisp) {\n var tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = pick(options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1\n tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];\n var mark = tick.mark;\n var isNewMark = !mark;\n if (tickSize) {\n // negate the length\n if (axis.opposite) {\n tickSize[0] = -tickSize[0];\n }\n // First time, create it\n if (!mark) {\n /**\n * The rendered mark of the tick.\n * @name Highcharts.Tick#mark\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.mark = mark = renderer.path()\n .addClass('highcharts-' + (type ? type + '-' : '') + 'tick')\n .add(axis.axisGroup);\n if (!axis.chart.styledMode) {\n mark.attr({\n stroke: tickColor,\n 'stroke-width': tickWidth\n });\n }\n }\n mark[isNewMark ? 'attr' : 'animate']({\n d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth() * reverseCrisp, axis.horiz, renderer),\n opacity: opacity\n });\n }\n };\n /**\n * Renders the tick label.\n * Note: The label should already be created in init(), so it should only\n * have to be moved into place.\n *\n * @private\n * @function Highcharts.Tick#renderLabel\n * @param {Highcharts.PositionObject} xy The position vector of the label\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the label\n * @param {number} index The index of the tick\n */\n Tick.prototype.renderLabel = function (xy, old, opacity, index) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n options = axis.options,\n label = tick.label,\n labelOptions = options.labels,\n step = labelOptions.step,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n x = xy.x,\n y = xy.y;\n var show = true;\n if (label && isNumber(x)) {\n label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);\n // Apply show first and show last. If the tick is both first and\n // last, it is a single centered tick, in which case we show the\n // label anyway (#2100).\n if ((tick.isFirst &&\n !tick.isLast &&\n !options.showFirstLabel) ||\n (tick.isLast &&\n !tick.isFirst &&\n !options.showLastLabel)) {\n show = false;\n // Handle label overflow and show or hide accordingly\n }\n else if (horiz &&\n !labelOptions.step &&\n !labelOptions.rotation &&\n !old &&\n opacity !== 0) {\n tick.handleOverflow(xy);\n }\n // apply step\n if (step && index % step) {\n // show those indices dividable by step\n show = false;\n }\n // Set the new position, and show or hide\n if (show && isNumber(xy.y)) {\n xy.opacity = opacity;\n label[tick.isNewLabel ? 'attr' : 'animate'](xy).show(true);\n tick.isNewLabel = false;\n }\n else {\n label.hide(); // #1338, #15863\n tick.isNewLabel = true;\n }\n }\n };\n /**\n * Replace labels with the moved ones to perform animation. Additionally\n * destroy unused labels.\n *\n * @private\n * @function Highcharts.Tick#replaceMovedLabel\n */\n Tick.prototype.replaceMovedLabel = function () {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var x,\n y;\n // Animate and destroy\n if (label && !tick.isNew) {\n x = axis.horiz ? (reversed ? axis.left : axis.width + axis.left) : label.xy.x;\n y = axis.horiz ?\n label.xy.y :\n (reversed ? axis.width + axis.top : axis.top);\n label.animate({ x: x, y: y, opacity: 0 }, void 0, label.destroy);\n delete tick.label;\n }\n axis.isDirty = true;\n tick.label = tick.movedLabel;\n delete tick.movedLabel;\n };\n return Tick;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Optional parameters for the tick.\n * @private\n * @interface Highcharts.TickParametersObject\n */ /**\n * Set category for the tick.\n * @name Highcharts.TickParametersObject#category\n * @type {string|undefined}\n */ /**\n * @name Highcharts.TickParametersObject#options\n * @type {Highcharts.Dictionary|undefined}\n */ /**\n * Set tickmarkOffset for the tick.\n * @name Highcharts.TickParametersObject#tickmarkOffset\n * @type {number|undefined}\n */\n /**\n * Additonal time tick information.\n *\n * @interface Highcharts.TimeTicksInfoObject\n * @extends Highcharts.TimeNormalizedObject\n */ /**\n * @name Highcharts.TimeTicksInfoObject#higherRanks\n * @type {Array}\n */ /**\n * @name Highcharts.TimeTicksInfoObject#totalRange\n * @type {number}\n */\n (''); // keeps doclets above in JS file\n\n return Tick;\n });\n _registerModule(_modules, 'Core/Axis/Axis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/AxisDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Utilities.js']], function (A, AxisDefaults, Color, D, F, H, Tick, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var deg2rad = H.deg2rad;\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n normalizeTickInterval = U.normalizeTickInterval,\n objectEach = U.objectEach,\n pick = U.pick,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n var getNormalizedTickInterval = function (axis,\n tickInterval) { return normalizeTickInterval(tickInterval,\n void 0,\n void 0,\n pick(axis.options.allowDecimals, \n // If the tick interval is greather than 0.5, avoid decimals, as\n // linear axes are often used to render discrete values (#3363). If\n // a tick amount is set, allow decimals by default, as it increases\n // the chances for a good fit.\n tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount); };\n /* *\n *\n * Class\n *\n * */\n /**\n * Create a new axis object. Called internally when instanciating a new chart or\n * adding axes by {@link Highcharts.Chart#addAxis}.\n *\n * A chart can have from 0 axes (pie chart) to multiples. In a normal, single\n * series cartesian chart, there is one X axis and one Y axis.\n *\n * The X axis or axes are referenced by {@link Highcharts.Chart.xAxis}, which is\n * an array of Axis objects. If there is only one axis, it can be referenced\n * through `chart.xAxis[0]`, and multiple axes have increasing indices. The same\n * pattern goes for Y axes.\n *\n * If you need to get the axes from a series object, use the `series.xAxis` and\n * `series.yAxis` properties. These are not arrays, as one series can only be\n * associated to one X and one Y axis.\n *\n * A third way to reference the axis programmatically is by `id`. Add an `id` in\n * the axis configuration options, and get the axis by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the axes are given in options.xAxis and\n * options.yAxis.\n *\n * @class\n * @name Highcharts.Axis\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n */\n var Axis = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Axis(chart, userOptions) {\n this.alternateBands = void 0;\n this.bottom = void 0;\n this.chart = void 0;\n this.closestPointRange = void 0;\n this.coll = void 0;\n this.eventOptions = void 0;\n this.hasNames = void 0;\n this.hasVisibleSeries = void 0;\n this.height = void 0;\n this.isLinked = void 0;\n this.labelEdge = void 0; // @todo\n this.labelFormatter = void 0;\n this.left = void 0;\n this.len = void 0;\n this.max = void 0;\n this.maxLabelLength = void 0;\n this.min = void 0;\n this.minorTickInterval = void 0;\n this.minorTicks = void 0;\n this.minPixelPadding = void 0;\n this.names = void 0;\n this.offset = void 0;\n this.options = void 0;\n this.overlap = void 0;\n this.paddedTicks = void 0;\n this.plotLinesAndBands = void 0;\n this.plotLinesAndBandsGroups = void 0;\n this.pointRange = void 0;\n this.pointRangePadding = void 0;\n this.pos = void 0;\n this.positiveValuesOnly = void 0;\n this.right = void 0;\n this.series = void 0;\n this.side = void 0;\n this.tickAmount = void 0;\n this.tickInterval = void 0;\n this.tickmarkOffset = void 0;\n this.tickPositions = void 0;\n this.tickRotCorr = void 0;\n this.ticks = void 0;\n this.top = void 0;\n this.transA = void 0;\n this.transB = void 0;\n this.translationSlope = void 0;\n this.userOptions = void 0;\n this.visible = void 0;\n this.width = void 0;\n this.zoomEnabled = void 0;\n this.init(chart, userOptions);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Overrideable function to initialize the axis.\n *\n * @see {@link Axis}\n *\n * @function Highcharts.Axis#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterInit\n * @emits Highcharts.Axis#event:init\n */\n Axis.prototype.init = function (chart, userOptions) {\n var isXAxis = userOptions.isX,\n axis = this;\n /**\n * The Chart that the axis belongs to.\n *\n * @name Highcharts.Axis#chart\n * @type {Highcharts.Chart}\n */\n axis.chart = chart;\n /**\n * Whether the axis is horizontal.\n *\n * @name Highcharts.Axis#horiz\n * @type {boolean|undefined}\n */\n axis.horiz = chart.inverted && !axis.isZAxis ? !isXAxis : isXAxis;\n /**\n * Whether the axis is the x-axis.\n *\n * @name Highcharts.Axis#isXAxis\n * @type {boolean|undefined}\n */\n axis.isXAxis = isXAxis;\n /**\n * The collection where the axis belongs, for example `xAxis`, `yAxis`\n * or `colorAxis`. Corresponds to properties on Chart, for example\n * {@link Chart.xAxis}.\n *\n * @name Highcharts.Axis#coll\n * @type {string}\n */\n axis.coll = axis.coll || (isXAxis ? 'xAxis' : 'yAxis');\n fireEvent(this, 'init', { userOptions: userOptions });\n // Needed in setOptions\n axis.opposite = pick(userOptions.opposite, axis.opposite);\n /**\n * The side on which the axis is rendered. 0 is top, 1 is right, 2\n * is bottom and 3 is left.\n *\n * @name Highcharts.Axis#side\n * @type {number}\n */\n axis.side = pick(userOptions.side, axis.side, (axis.horiz ?\n (axis.opposite ? 0 : 2) : // top : bottom\n (axis.opposite ? 1 : 3)) // right : left\n );\n /**\n * Current options for the axis after merge of defaults and user's\n * options.\n *\n * @name Highcharts.Axis#options\n * @type {Highcharts.AxisOptions}\n */\n axis.setOptions(userOptions);\n var options = this.options,\n labelsOptions = options.labels,\n type = options.type;\n /**\n * User's options for this axis without defaults.\n *\n * @name Highcharts.Axis#userOptions\n * @type {Highcharts.AxisOptions}\n */\n axis.userOptions = userOptions;\n axis.minPixelPadding = 0;\n /**\n * Whether the axis is reversed. Based on the `axis.reversed`,\n * option, but inverted charts have reversed xAxis by default.\n *\n * @name Highcharts.Axis#reversed\n * @type {boolean}\n */\n axis.reversed = pick(options.reversed, axis.reversed);\n axis.visible = options.visible;\n axis.zoomEnabled = options.zoomEnabled;\n // Initial categories\n axis.hasNames =\n type === 'category' || options.categories === true;\n /**\n * If categories are present for the axis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also be extracted by giving each\n * point a name and setting axis type to `category`. However, if you\n * have multiple series, best practice remains defining the `categories`\n * array.\n *\n * @see [xAxis.categories](/highcharts/xAxis.categories)\n *\n * @name Highcharts.Axis#categories\n * @type {Array}\n * @readonly\n */\n axis.categories = options.categories || (axis.hasNames ? [] : void 0);\n if (!axis.names) { // Preserve on update (#3830)\n axis.names = [];\n axis.names.keys = {};\n }\n // Placeholder for plotlines and plotbands groups\n axis.plotLinesAndBandsGroups = {};\n // Shorthand types\n axis.positiveValuesOnly = !!axis.logarithmic;\n // Flag, if axis is linked to another axis\n axis.isLinked = defined(options.linkedTo);\n /**\n * List of major ticks mapped by postition on axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#ticks\n * @type {Highcharts.Dictionary}\n */\n axis.ticks = {};\n axis.labelEdge = [];\n /**\n * List of minor ticks mapped by position on the axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#minorTicks\n * @type {Highcharts.Dictionary}\n */\n axis.minorTicks = {};\n // List of plotLines/Bands\n axis.plotLinesAndBands = [];\n // Alternate bands\n axis.alternateBands = {};\n // Axis metrics\n axis.len = 0;\n axis.minRange = axis.userMinRange = options.minRange || options.maxZoom;\n axis.range = options.range;\n axis.offset = options.offset || 0;\n /**\n * The maximum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#max\n * @type {number|null}\n */\n axis.max = null;\n /**\n * The minimum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#min\n * @type {number|null}\n */\n axis.min = null;\n /**\n * The processed crosshair options.\n *\n * @name Highcharts.Axis#crosshair\n * @type {boolean|Highcharts.AxisCrosshairOptions}\n */\n var crosshair = pick(options.crosshair,\n splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);\n axis.crosshair = crosshair === true ? {} : crosshair;\n // Register. Don't add it again on Axis.update().\n if (chart.axes.indexOf(axis) === -1) { //\n if (isXAxis) { // #2713\n chart.axes.splice(chart.xAxis.length, 0, axis);\n }\n else {\n chart.axes.push(axis);\n }\n chart[axis.coll].push(axis);\n }\n /**\n * All series associated to the axis.\n *\n * @name Highcharts.Axis#series\n * @type {Array}\n */\n axis.series = axis.series || []; // populated by Series\n // Reversed axis\n if (chart.inverted &&\n !axis.isZAxis &&\n isXAxis &&\n typeof axis.reversed === 'undefined') {\n axis.reversed = true;\n }\n axis.labelRotation = isNumber(labelsOptions.rotation) ?\n labelsOptions.rotation :\n void 0;\n // Register event listeners\n registerEventOptions(axis, options);\n fireEvent(this, 'afterInit');\n };\n /**\n * Merge and set options.\n *\n * @private\n * @function Highcharts.Axis#setOptions\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterSetOptions\n */\n Axis.prototype.setOptions = function (userOptions) {\n this.options = merge(AxisDefaults.defaultXAxisOptions, (this.coll === 'yAxis') && AxisDefaults.defaultYAxisOptions, [\n AxisDefaults.defaultTopAxisOptions,\n AxisDefaults.defaultRightAxisOptions,\n AxisDefaults.defaultBottomAxisOptions,\n AxisDefaults.defaultLeftAxisOptions\n ][this.side], merge(\n // if set in setOptions (#1053):\n defaultOptions[this.coll], userOptions));\n fireEvent(this, 'afterSetOptions', { userOptions: userOptions });\n };\n /**\n * The default label formatter. The context is a special config object for\n * the label. In apps, use the\n * [labels.formatter](https://api.highcharts.com/highcharts/xAxis.labels.formatter)\n * instead, except when a modification is needed.\n *\n * @function Highcharts.Axis#defaultLabelFormatter\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n * Formatter context of axis label.\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} [ctx]\n * Formatter context of axis label.\n *\n * @return {string}\n * The formatted label content.\n */\n Axis.prototype.defaultLabelFormatter = function (ctx) {\n var axis = this.axis,\n chart = this.chart,\n numberFormatter = chart.numberFormatter,\n value = isNumber(this.value) ? this.value : NaN,\n time = axis.chart.time,\n categories = axis.categories,\n dateTimeLabelFormat = this.dateTimeLabelFormat,\n lang = defaultOptions.lang,\n numericSymbols = lang.numericSymbols,\n numSymMagnitude = lang.numericSymbolMagnitude || 1000, \n // make sure the same symbol is added for all labels on a linear\n // axis\n numericSymbolDetector = axis.logarithmic ?\n Math.abs(value) :\n axis.tickInterval;\n var i = numericSymbols && numericSymbols.length,\n multi,\n ret;\n if (categories) {\n ret = \"\".concat(this.value);\n }\n else if (dateTimeLabelFormat) { // datetime axis\n ret = time.dateFormat(dateTimeLabelFormat, value);\n }\n else if (i && numericSymbolDetector >= 1000) {\n // Decide whether we should add a numeric symbol like k (thousands)\n // or M (millions). If we are to enable this in tooltip or other\n // places as well, we can move this logic to the numberFormatter and\n // enable it by a parameter.\n while (i-- && typeof ret === 'undefined') {\n multi = Math.pow(numSymMagnitude, i + 1);\n if (\n // Only accept a numeric symbol when the distance is more\n // than a full unit. So for example if the symbol is k, we\n // don't accept numbers like 0.5k.\n numericSymbolDetector >= multi &&\n // Accept one decimal before the symbol. Accepts 0.5k but\n // not 0.25k. How does this work with the previous?\n (value * 10) % multi === 0 &&\n numericSymbols[i] !== null &&\n value !== 0) { // #5480\n ret = numberFormatter(value / multi, -1) + numericSymbols[i];\n }\n }\n }\n if (typeof ret === 'undefined') {\n if (Math.abs(value) >= 10000) { // add thousands separators\n ret = numberFormatter(value, -1);\n }\n else { // small numbers\n ret = numberFormatter(value, -1, void 0, ''); // #2466\n }\n }\n return ret;\n };\n /**\n * Get the minimum and maximum for the series of each axis. The function\n * analyzes the axis series and updates `this.dataMin` and `this.dataMax`.\n *\n * @private\n * @function Highcharts.Axis#getSeriesExtremes\n *\n * @emits Highcharts.Axis#event:afterGetSeriesExtremes\n * @emits Highcharts.Axis#event:getSeriesExtremes\n */\n Axis.prototype.getSeriesExtremes = function () {\n var axis = this,\n chart = axis.chart;\n var xExtremes;\n fireEvent(this, 'getSeriesExtremes', null, function () {\n axis.hasVisibleSeries = false;\n // Reset properties in case we're redrawing (#3353)\n axis.dataMin = axis.dataMax = axis.threshold = null;\n axis.softThreshold = !axis.isXAxis;\n // Loop through this axis' series\n axis.series.forEach(function (series) {\n if (series.visible ||\n !chart.options.chart.ignoreHiddenSeries) {\n var seriesOptions = series.options;\n var xData = void 0,\n threshold = seriesOptions.threshold,\n seriesDataMin = void 0,\n seriesDataMax = void 0;\n axis.hasVisibleSeries = true;\n // Validate threshold in logarithmic axes\n if (axis.positiveValuesOnly && threshold <= 0) {\n threshold = null;\n }\n // Get dataMin and dataMax for X axes\n if (axis.isXAxis) {\n xData = series.xData;\n if (xData.length) {\n xData = axis.logarithmic ?\n xData.filter(axis.validatePositiveValue) :\n xData;\n xExtremes = series.getXExtremes(xData);\n // If xData contains values which is not numbers,\n // then filter them out. To prevent performance hit,\n // we only do this after we have already found\n // seriesDataMin because in most cases all data is\n // valid. #5234.\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n if (!isNumber(seriesDataMin) &&\n // #5010:\n !(seriesDataMin instanceof Date)) {\n xData = xData.filter(isNumber);\n xExtremes = series.getXExtremes(xData);\n // Do it again with valid data\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n }\n if (xData.length) {\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n }\n // Get dataMin and dataMax for Y axes, as well as handle\n // stacking and processed data\n }\n else {\n // Get this particular series extremes\n var dataExtremes = series.applyExtremes();\n // Get the dataMin and dataMax so far. If percentage is\n // used, the min and max are always 0 and 100. If\n // seriesDataMin and seriesDataMax is null, then series\n // doesn't have active y data, we continue with nulls\n if (isNumber(dataExtremes.dataMin)) {\n seriesDataMin = dataExtremes.dataMin;\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n }\n if (isNumber(dataExtremes.dataMax)) {\n seriesDataMax = dataExtremes.dataMax;\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n // Adjust to threshold\n if (defined(threshold)) {\n axis.threshold = threshold;\n }\n // If any series has a hard threshold, it takes\n // precedence\n if (!seriesOptions.softThreshold ||\n axis.positiveValuesOnly) {\n axis.softThreshold = false;\n }\n }\n }\n });\n });\n fireEvent(this, 'afterGetSeriesExtremes');\n };\n /**\n * Translate from axis value to pixel position on the chart, or back. Use\n * the `toPixels` and `toValue` functions in applications.\n *\n * @private\n * @function Highcharts.Axis#translate\n */\n Axis.prototype.translate = function (val, backwards, cvsCoord, old, handleLog, pointPlacement) {\n var axis = (this.linkedParent || this), // #1417\n localMin = (old && axis.old ? axis.old.min : axis.min);\n if (!isNumber(localMin)) {\n return NaN;\n }\n var minPixelPadding = axis.minPixelPadding,\n doPostTranslate = (axis.isOrdinal ||\n axis.brokenAxis && axis.brokenAxis.hasBreaks ||\n (axis.logarithmic && handleLog)) && axis.lin2val;\n var sign = 1,\n cvsOffset = 0,\n localA = old && axis.old ? axis.old.transA : axis.transA,\n returnValue = 0;\n if (!localA) {\n localA = axis.transA;\n }\n // In vertical axes, the canvas coordinates start from 0 at the top like\n // in SVG.\n if (cvsCoord) {\n sign *= -1; // canvas coordinates inverts the value\n cvsOffset = axis.len;\n }\n // Handle reversed axis\n if (axis.reversed) {\n sign *= -1;\n cvsOffset -= sign * (axis.sector || axis.len);\n }\n // From pixels to value\n if (backwards) { // reverse translation\n val = val * sign + cvsOffset;\n val -= minPixelPadding;\n // from chart pixel to value:\n returnValue = val / localA + localMin;\n if (doPostTranslate) { // log, ordinal and broken axis\n returnValue = axis.lin2val(returnValue);\n }\n // From value to pixels\n }\n else {\n if (doPostTranslate) { // log, ordinal and broken axis\n val = axis.val2lin(val);\n }\n var value = sign * (val - localMin) * localA;\n returnValue = (!axis.isRadial ? correctFloat(value) : value) +\n cvsOffset +\n (sign * minPixelPadding) +\n (isNumber(pointPlacement) ? localA * pointPlacement : 0);\n }\n return returnValue;\n };\n /**\n * Translate a value in terms of axis units into pixels within the chart.\n *\n * @function Highcharts.Axis#toPixels\n *\n * @param {number} value\n * A value in terms of axis units.\n *\n * @param {boolean} paneCoordinates\n * Whether to return the pixel coordinate relative to the chart or just the\n * axis/pane itself.\n *\n * @return {number}\n * Pixel position of the value on the chart or axis.\n */\n Axis.prototype.toPixels = function (value, paneCoordinates) {\n return this.translate(value, false, !this.horiz, void 0, true) +\n (paneCoordinates ? 0 : this.pos);\n };\n /**\n * Translate a pixel position along the axis to a value in terms of axis\n * units.\n *\n * @function Highcharts.Axis#toValue\n *\n * @param {number} pixel\n * The pixel value coordinate.\n *\n * @param {boolean} [paneCoordinates=false]\n * Whether the input pixel is relative to the chart or just the axis/pane\n * itself.\n *\n * @return {number}\n * The axis value.\n */\n Axis.prototype.toValue = function (pixel, paneCoordinates) {\n return this.translate(pixel - (paneCoordinates ? 0 : this.pos), true, !this.horiz, void 0, true);\n };\n /**\n * Create the path for a plot line that goes from the given value on\n * this axis, across the plot to the opposite side. Also used internally for\n * grid lines and crosshairs.\n *\n * @function Highcharts.Axis#getPlotLinePath\n *\n * @param {Highcharts.AxisPlotLinePathOptionsObject} options\n * Options for the path.\n *\n * @return {Highcharts.SVGPathArray|null}\n * The SVG path definition for the plot line.\n */\n Axis.prototype.getPlotLinePath = function (options) {\n var axis = this,\n chart = axis.chart,\n axisLeft = axis.left,\n axisTop = axis.top,\n old = options.old,\n value = options.value,\n lineWidth = options.lineWidth,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n cWidth = (old && chart.oldChartWidth) || chart.chartWidth,\n transB = axis.transB;\n var translatedValue = options.translatedValue,\n force = options.force,\n x1,\n y1,\n x2,\n y2,\n skip;\n // eslint-disable-next-line valid-jsdoc\n /**\n * Check if x is between a and b. If not, either move to a/b\n * or skip, depending on the force parameter.\n * @private\n */\n function between(x, a, b) {\n if (force !== 'pass' && (x < a || x > b)) {\n if (force) {\n x = clamp(x, a, b);\n }\n else {\n skip = true;\n }\n }\n return x;\n }\n var evt = {\n value: value,\n lineWidth: lineWidth,\n old: old,\n force: force,\n acrossPanes: options.acrossPanes,\n translatedValue: translatedValue\n };\n fireEvent(this, 'getPlotLinePath', evt, function (e) {\n translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));\n // Keep the translated value within sane bounds, and avoid Infinity\n // to fail the isNumber test (#7709).\n translatedValue = clamp(translatedValue, -1e5, 1e5);\n x1 = x2 = Math.round(translatedValue + transB);\n y1 = y2 = Math.round(cHeight - translatedValue - transB);\n if (!isNumber(translatedValue)) { // no min or max\n skip = true;\n force = false; // #7175, don't force it when path is invalid\n }\n else if (axis.horiz) {\n y1 = axisTop;\n y2 = cHeight - axis.bottom;\n x1 = x2 = between(x1, axisLeft, axisLeft + axis.width);\n }\n else {\n x1 = axisLeft;\n x2 = cWidth - axis.right;\n y1 = y2 = between(y1, axisTop, axisTop + axis.height);\n }\n e.path = skip && !force ?\n null :\n chart.renderer.crispLine([['M', x1, y1], ['L', x2, y2]], lineWidth || 1);\n });\n return evt.path;\n };\n /**\n * Internal function to get the tick positions of a linear axis to round\n * values like whole tens or every five.\n *\n * @function Highcharts.Axis#getLinearTickPositions\n *\n * @param {number} tickInterval\n * The normalized tick interval.\n *\n * @param {number} min\n * Axis minimum.\n *\n * @param {number} max\n * Axis maximum.\n *\n * @return {Array}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getLinearTickPositions = function (tickInterval, min, max) {\n var roundedMin = correctFloat(Math.floor(min / tickInterval) * tickInterval),\n roundedMax = correctFloat(Math.ceil(max / tickInterval) * tickInterval),\n tickPositions = [];\n var pos,\n lastPos,\n precision;\n // When the precision is higher than what we filter out in\n // correctFloat, skip it (#6183).\n if (correctFloat(roundedMin + tickInterval) === roundedMin) {\n precision = 20;\n }\n // For single points, add a tick regardless of the relative position\n // (#2662, #6274)\n if (this.single) {\n return [min];\n }\n // Populate the intermediate values\n pos = roundedMin;\n while (pos <= roundedMax) {\n // Place the tick on the rounded value\n tickPositions.push(pos);\n // Always add the raw tickInterval, not the corrected one.\n pos = correctFloat(pos + tickInterval, precision);\n // If the interval is not big enough in the current min - max range\n // to actually increase the loop variable, we need to break out to\n // prevent endless loop. Issue #619\n if (pos === lastPos) {\n break;\n }\n // Record the last value\n lastPos = pos;\n }\n return tickPositions;\n };\n /**\n * Resolve the new minorTicks/minorTickInterval options into the legacy\n * loosely typed minorTickInterval option.\n *\n * @function Highcharts.Axis#getMinorTickInterval\n *\n * @return {number|\"auto\"|null}\n * Legacy option\n */\n Axis.prototype.getMinorTickInterval = function () {\n var options = this.options;\n if (options.minorTicks === true) {\n return pick(options.minorTickInterval, 'auto');\n }\n if (options.minorTicks === false) {\n return null;\n }\n return options.minorTickInterval;\n };\n /**\n * Internal function to return the minor tick positions. For logarithmic\n * axes, the same logic as for major ticks is reused.\n *\n * @function Highcharts.Axis#getMinorTickPositions\n *\n * @return {Array}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getMinorTickPositions = function () {\n var axis = this,\n options = axis.options,\n tickPositions = axis.tickPositions,\n minorTickInterval = axis.minorTickInterval,\n pointRangePadding = axis.pointRangePadding || 0,\n min = axis.min - pointRangePadding, // #1498\n max = axis.max + pointRangePadding, // #1498\n range = max - min;\n var minorTickPositions = [],\n pos;\n // If minor ticks get too dense, they are hard to read, and may cause\n // long running script. So we don't draw them.\n if (range && range / minorTickInterval < axis.len / 3) { // #3875\n var logarithmic_1 = axis.logarithmic;\n if (logarithmic_1) {\n // For each interval in the major ticks, compute the minor ticks\n // separately.\n this.paddedTicks.forEach(function (_pos, i, paddedTicks) {\n if (i) {\n minorTickPositions.push.apply(minorTickPositions, logarithmic_1.getLogTickPositions(minorTickInterval, paddedTicks[i - 1], paddedTicks[i], true));\n }\n });\n }\n else if (axis.dateTime &&\n this.getMinorTickInterval() === 'auto') { // #1314\n minorTickPositions = minorTickPositions.concat(axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(minorTickInterval), min, max, options.startOfWeek));\n }\n else {\n for (pos = min + (tickPositions[0] - min) % minorTickInterval; pos <= max; pos += minorTickInterval) {\n // Very, very, tight grid lines (#5771)\n if (pos === minorTickPositions[0]) {\n break;\n }\n minorTickPositions.push(pos);\n }\n }\n }\n if (minorTickPositions.length !== 0) {\n axis.trimTicks(minorTickPositions); // #3652 #3743 #1498 #6330\n }\n return minorTickPositions;\n };\n /**\n * Adjust the min and max for the minimum range. Keep in mind that the\n * series data is not yet processed, so we don't have information on data\n * cropping and grouping, or updated `axis.pointRange` or\n * `series.pointRange`. The data can't be processed until we have finally\n * established min and max.\n *\n * @private\n * @function Highcharts.Axis#adjustForMinRange\n */\n Axis.prototype.adjustForMinRange = function () {\n var axis = this,\n options = axis.options,\n log = axis.logarithmic;\n var min = axis.min,\n max = axis.max,\n zoomOffset,\n spaceAvailable,\n closestDataRange = 0,\n i,\n distance,\n xData,\n loopLength,\n minArgs,\n maxArgs,\n minRange;\n // Set the automatic minimum range based on the closest point distance\n if (axis.isXAxis &&\n typeof axis.minRange === 'undefined' &&\n !log) {\n if (defined(options.min) ||\n defined(options.max) ||\n defined(options.floor) ||\n defined(options.ceiling)) {\n axis.minRange = null; // don't do this again\n }\n else {\n // Find the closest distance between raw data points, as opposed\n // to closestPointRange that applies to processed points\n // (cropped and grouped)\n axis.series.forEach(function (series) {\n xData = series.xData;\n loopLength = series.xIncrement ? 1 : xData.length - 1;\n if (xData.length > 1) {\n for (i = loopLength; i > 0; i--) {\n distance = xData[i] - xData[i - 1];\n if (!closestDataRange ||\n distance < closestDataRange) {\n closestDataRange = distance;\n }\n }\n }\n });\n axis.minRange = Math.min(closestDataRange * 5, axis.dataMax - axis.dataMin);\n }\n }\n // if minRange is exceeded, adjust\n if (max - min < axis.minRange) {\n spaceAvailable =\n axis.dataMax - axis.dataMin >=\n axis.minRange;\n minRange = axis.minRange;\n zoomOffset = (minRange - max + min) / 2;\n // if min and max options have been set, don't go beyond it\n minArgs = [\n min - zoomOffset,\n pick(options.min, min - zoomOffset)\n ];\n // If space is available, stay within the data range\n if (spaceAvailable) {\n minArgs[2] = axis.logarithmic ?\n axis.logarithmic.log2lin(axis.dataMin) :\n axis.dataMin;\n }\n min = arrayMax(minArgs);\n maxArgs = [\n min + minRange,\n pick(options.max, min + minRange)\n ];\n // If space is availabe, stay within the data range\n if (spaceAvailable) {\n maxArgs[2] = log ?\n log.log2lin(axis.dataMax) :\n axis.dataMax;\n }\n max = arrayMin(maxArgs);\n // now if the max is adjusted, adjust the min back\n if (max - min < minRange) {\n minArgs[0] = max - minRange;\n minArgs[1] = pick(options.min, max - minRange);\n min = arrayMax(minArgs);\n }\n }\n // Record modified extremes\n axis.min = min;\n axis.max = max;\n };\n /**\n * Find the closestPointRange across all series.\n *\n * @private\n * @function Highcharts.Axis#getClosest\n */\n Axis.prototype.getClosest = function () {\n var ret;\n if (this.categories) {\n ret = 1;\n }\n else {\n this.series.forEach(function (series) {\n var seriesClosest = series.closestPointRange,\n visible = series.visible ||\n !series.chart.options.chart.ignoreHiddenSeries;\n if (!series.noSharedTooltip &&\n defined(seriesClosest) &&\n visible) {\n ret = defined(ret) ?\n Math.min(ret, seriesClosest) :\n seriesClosest;\n }\n });\n }\n return ret;\n };\n /**\n * When a point name is given and no x, search for the name in the existing\n * categories, or if categories aren't provided, search names or create a\n * new category (#2522).\n *\n * @private\n * @function Highcharts.Axis#nameToX\n *\n * @param {Highcharts.Point} point\n * The point to inspect.\n *\n * @return {number}\n * The X value that the point is given.\n */\n Axis.prototype.nameToX = function (point) {\n var explicitCategories = isArray(this.options.categories),\n names = explicitCategories ? this.categories : this.names;\n var nameX = point.options.x,\n x;\n point.series.requireSorting = false;\n if (!defined(nameX)) {\n nameX = this.options.uniqueNames && names ?\n (explicitCategories ?\n names.indexOf(point.name) :\n pick(names.keys[point.name], -1)) :\n point.series.autoIncrement();\n }\n if (nameX === -1) { // Not found in currenct categories\n if (!explicitCategories && names) {\n x = names.length;\n }\n }\n else {\n x = nameX;\n }\n // Write the last point's name to the names array\n if (typeof x !== 'undefined') {\n this.names[x] = point.name;\n // Backwards mapping is much faster than array searching (#7725)\n this.names.keys[point.name] = x;\n }\n else if (point.x) {\n x = point.x; // #17438\n }\n return x;\n };\n /**\n * When changes have been done to series data, update the axis.names.\n *\n * @private\n * @function Highcharts.Axis#updateNames\n */\n Axis.prototype.updateNames = function () {\n var axis = this,\n names = this.names,\n i = names.length;\n if (i > 0) {\n Object.keys(names.keys).forEach(function (key) {\n delete (names.keys)[key];\n });\n names.length = 0;\n this.minRange = this.userMinRange; // Reset\n (this.series || []).forEach(function (series) {\n // Reset incrementer (#5928)\n series.xIncrement = null;\n // When adding a series, points are not yet generated\n if (!series.points || series.isDirtyData) {\n // When we're updating the series with data that is longer\n // than it was, and cropThreshold is passed, we need to make\n // sure that the axis.max is increased _before_ running the\n // premature processData. Otherwise this early iteration of\n // processData will crop the points to axis.max, and the\n // names array will be too short (#5857).\n axis.max = Math.max(axis.max, series.xData.length - 1);\n series.processData();\n series.generatePoints();\n }\n series.data.forEach(function (point, i) {\n var x;\n if (point &&\n point.options &&\n typeof point.name !== 'undefined' // #9562\n ) {\n x = axis.nameToX(point);\n if (typeof x !== 'undefined' && x !== point.x) {\n point.x = x;\n series.xData[i] = x;\n }\n }\n });\n });\n }\n };\n /**\n * Update translation information.\n *\n * @private\n * @function Highcharts.Axis#setAxisTranslation\n *\n * @emits Highcharts.Axis#event:afterSetAxisTranslation\n */\n Axis.prototype.setAxisTranslation = function () {\n var axis = this,\n range = axis.max - axis.min,\n linkedParent = axis.linkedParent,\n hasCategories = !!axis.categories,\n isXAxis = axis.isXAxis;\n var pointRange = axis.axisPointRange || 0,\n closestPointRange,\n minPointOffset = 0,\n pointRangePadding = 0,\n ordinalCorrection,\n transA = axis.transA;\n // Adjust translation for padding. Y axis with categories need to go\n // through the same (#1784).\n if (isXAxis || hasCategories || pointRange) {\n // Get the closest points\n closestPointRange = axis.getClosest();\n if (linkedParent) {\n minPointOffset = linkedParent.minPointOffset;\n pointRangePadding = linkedParent.pointRangePadding;\n }\n else {\n axis.series.forEach(function (series) {\n var seriesPointRange = hasCategories ?\n 1 :\n (isXAxis ?\n pick(series.options.pointRange,\n closestPointRange, 0) :\n (axis.axisPointRange || 0)), // #2806\n pointPlacement = series.options.pointPlacement;\n pointRange = Math.max(pointRange, seriesPointRange);\n if (!axis.single || hasCategories) {\n // TODO: series should internally set x- and y-\n // pointPlacement to simplify this logic.\n var isPointPlacementAxis = series.is('xrange') ?\n !isXAxis :\n isXAxis;\n // minPointOffset is the value padding to the left of\n // the axis in order to make room for points with a\n // pointRange, typically columns. When the\n // pointPlacement option is 'between' or 'on', this\n // padding does not apply.\n minPointOffset = Math.max(minPointOffset, isPointPlacementAxis && isString(pointPlacement) ?\n 0 :\n seriesPointRange / 2);\n // Determine the total padding needed to the length of\n // the axis to make room for the pointRange. If the\n // series' pointPlacement is 'on', no padding is added.\n pointRangePadding = Math.max(pointRangePadding, isPointPlacementAxis && pointPlacement === 'on' ?\n 0 :\n seriesPointRange);\n }\n });\n }\n // Record minPointOffset and pointRangePadding\n ordinalCorrection = (axis.ordinal && axis.ordinal.slope && closestPointRange) ?\n axis.ordinal.slope / closestPointRange :\n 1; // #988, #1853\n axis.minPointOffset = minPointOffset =\n minPointOffset * ordinalCorrection;\n axis.pointRangePadding =\n pointRangePadding = pointRangePadding * ordinalCorrection;\n // pointRange means the width reserved for each point, like in a\n // column chart\n axis.pointRange = Math.min(pointRange, axis.single && hasCategories ? 1 : range);\n // closestPointRange means the closest distance between points. In\n // columns it is mostly equal to pointRange, but in lines pointRange\n // is 0 while closestPointRange is some other value\n if (isXAxis) {\n axis.closestPointRange = closestPointRange;\n }\n }\n // Secondary values\n axis.translationSlope = axis.transA = transA =\n axis.staticScale ||\n axis.len / ((range + pointRangePadding) || 1);\n // Translation addend\n axis.transB = axis.horiz ? axis.left : axis.bottom;\n axis.minPixelPadding = transA * minPointOffset;\n fireEvent(this, 'afterSetAxisTranslation');\n };\n /**\n * @private\n * @function Highcharts.Axis#minFromRange\n */\n Axis.prototype.minFromRange = function () {\n var axis = this;\n return axis.max - axis.range;\n };\n /**\n * Set the tick positions to round values and optionally extend the extremes\n * to the nearest tick.\n *\n * @private\n * @function Highcharts.Axis#setTickInterval\n *\n * @param {boolean} secondPass\n * TO-DO: parameter description\n *\n * @emits Highcharts.Axis#event:foundExtremes\n */\n Axis.prototype.setTickInterval = function (secondPass) {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n options = axis.options,\n isXAxis = axis.isXAxis,\n isLinked = axis.isLinked,\n tickPixelIntervalOption = options.tickPixelInterval,\n categories = axis.categories,\n softThreshold = axis.softThreshold;\n var maxPadding = options.maxPadding,\n minPadding = options.minPadding,\n length,\n linkedParentExtremes, \n // Only non-negative tickInterval is valid, #12961\n tickIntervalOption = isNumber(options.tickInterval) && options.tickInterval >= 0 ?\n options.tickInterval : void 0,\n threshold = isNumber(axis.threshold) ? axis.threshold : null,\n thresholdMin,\n thresholdMax,\n hardMin,\n hardMax;\n if (!axis.dateTime && !categories && !isLinked) {\n this.getTickAmount();\n }\n // Min or max set either by zooming/setExtremes or initial options\n hardMin = pick(axis.userMin, options.min);\n hardMax = pick(axis.userMax, options.max);\n // Linked axis gets the extremes from the parent axis\n if (isLinked) {\n axis.linkedParent = chart[axis.coll][options.linkedTo];\n linkedParentExtremes = axis.linkedParent.getExtremes();\n axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);\n axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);\n if (options.type !== axis.linkedParent.options.type) {\n // Can't link axes of different type\n error(11, 1, chart);\n }\n // Initial min and max from the extreme data values\n }\n else {\n // Adjust to hard threshold\n if (softThreshold && defined(threshold)) {\n if (axis.dataMin >= threshold) {\n thresholdMin = threshold;\n minPadding = 0;\n }\n else if (axis.dataMax <= threshold) {\n thresholdMax = threshold;\n maxPadding = 0;\n }\n }\n axis.min = pick(hardMin, thresholdMin, axis.dataMin);\n axis.max = pick(hardMax, thresholdMax, axis.dataMax);\n }\n if (log) {\n if (axis.positiveValuesOnly &&\n !secondPass &&\n Math.min(axis.min, pick(axis.dataMin, axis.min)) <= 0) { // #978\n // Can't plot negative values on log axis\n error(10, 1, chart);\n }\n // The correctFloat cures #934, float errors on full tens. But it\n // was too aggressive for #4360 because of conversion back to lin,\n // therefore use precision 15.\n axis.min = correctFloat(log.log2lin(axis.min), 16);\n axis.max = correctFloat(log.log2lin(axis.max), 16);\n }\n // handle zoomed range\n if (axis.range && defined(axis.max)) {\n // #618, #6773:\n axis.userMin = axis.min = hardMin =\n Math.max(axis.dataMin, axis.minFromRange());\n axis.userMax = hardMax = axis.max;\n axis.range = null; // don't use it when running setExtremes\n }\n // Hook for Highcharts Stock Scroller.\n // Consider combining with beforePadding.\n fireEvent(axis, 'foundExtremes');\n // Hook for adjusting this.min and this.max. Used by bubble series.\n if (axis.beforePadding) {\n axis.beforePadding();\n }\n // adjust min and max for the minimum range\n axis.adjustForMinRange();\n // Pad the values to get clear of the chart's edges. To avoid\n // tickInterval taking the padding into account, we do this after\n // computing tick interval (#1337).\n if (!categories &&\n !axis.axisPointRange &&\n !(axis.stacking && axis.stacking.usePercentage) &&\n !isLinked &&\n defined(axis.min) &&\n defined(axis.max)) {\n length = axis.max - axis.min;\n if (length) {\n if (!defined(hardMin) && minPadding) {\n axis.min -= length * minPadding;\n }\n if (!defined(hardMax) && maxPadding) {\n axis.max += length * maxPadding;\n }\n }\n }\n // Handle options for floor, ceiling, softMin and softMax (#6359)\n if (!isNumber(axis.userMin)) {\n if (isNumber(options.softMin) && options.softMin < axis.min) {\n axis.min = hardMin = options.softMin; // #6894\n }\n if (isNumber(options.floor)) {\n axis.min = Math.max(axis.min, options.floor);\n }\n }\n if (!isNumber(axis.userMax)) {\n if (isNumber(options.softMax) && options.softMax > axis.max) {\n axis.max = hardMax = options.softMax; // #6894\n }\n if (isNumber(options.ceiling)) {\n axis.max = Math.min(axis.max, options.ceiling);\n }\n }\n // When the threshold is soft, adjust the extreme value only if the data\n // extreme and the padded extreme land on either side of the threshold.\n // For example, a series of [0, 1, 2, 3] would make the yAxis add a tick\n // for -1 because of the default minPadding and startOnTick options.\n // This is prevented by the softThreshold option.\n if (softThreshold && defined(axis.dataMin)) {\n threshold = threshold || 0;\n if (!defined(hardMin) &&\n axis.min < threshold &&\n axis.dataMin >= threshold) {\n axis.min = axis.options.minRange ?\n Math.min(threshold, axis.max -\n axis.minRange) :\n threshold;\n }\n else if (!defined(hardMax) &&\n axis.max > threshold &&\n axis.dataMax <= threshold) {\n axis.max = axis.options.minRange ?\n Math.max(threshold, axis.min +\n axis.minRange) :\n threshold;\n }\n }\n // If min is bigger than highest, or if max less than lowest value, the\n // chart should not render points. (#14417)\n if (isNumber(axis.min) &&\n isNumber(axis.max) &&\n !this.chart.polar &&\n (axis.min > axis.max)) {\n if (defined(axis.options.min)) {\n axis.max = axis.min;\n }\n else if (defined(axis.options.max)) {\n axis.min = axis.max;\n }\n }\n // get tickInterval\n if (axis.min === axis.max ||\n typeof axis.min === 'undefined' ||\n typeof axis.max === 'undefined') {\n axis.tickInterval = 1;\n }\n else if (isLinked &&\n axis.linkedParent &&\n !tickIntervalOption &&\n tickPixelIntervalOption ===\n axis.linkedParent.options.tickPixelInterval) {\n axis.tickInterval = tickIntervalOption =\n axis.linkedParent.tickInterval;\n }\n else {\n axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?\n ((axis.max - axis.min) /\n Math.max(this.tickAmount - 1, 1)) :\n void 0, \n // For categoried axis, 1 is default, for linear axis use\n // tickPix\n categories ?\n 1 :\n // don't let it be more than the data range\n (axis.max - axis.min) *\n tickPixelIntervalOption /\n Math.max(axis.len, tickPixelIntervalOption));\n }\n // Now we're finished detecting min and max, crop and group series data.\n // This is in turn needed in order to find tick positions in ordinal\n // axes.\n if (isXAxis && !secondPass) {\n var hasExtremesChanged_1 = axis.min !==\n (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n // First process all series assigned to that axis.\n axis.series.forEach(function (series) {\n // Allows filtering out points outside the plot area.\n series.forceCrop = (series.forceCropping &&\n series.forceCropping());\n series.processData(hasExtremesChanged_1);\n });\n // Then apply grouping if needed. The hasExtremesChanged helps to\n // decide if the data grouping should be skipped in the further\n // calculations #16319.\n fireEvent(this, 'postProcessData', { hasExtremesChanged: hasExtremesChanged_1 });\n }\n // set the translation factor used in translate function\n axis.setAxisTranslation();\n // hook for ordinal axes and radial axes\n fireEvent(this, 'initialAxisTranslation');\n // In column-like charts, don't cramp in more ticks than there are\n // points (#1943, #4184)\n if (axis.pointRange && !tickIntervalOption) {\n axis.tickInterval = Math.max(axis.pointRange, axis.tickInterval);\n }\n // Before normalizing the tick interval, handle minimum tick interval.\n // This applies only if tickInterval is not defined.\n var minTickInterval = pick(options.minTickInterval, \n // In datetime axes, don't go below the data interval, except when\n // there are scatter-like series involved (#13369).\n axis.dateTime &&\n !axis.series.some(function (s) { return s.noSharedTooltip; }) ?\n axis.closestPointRange : 0);\n if (!tickIntervalOption && axis.tickInterval < minTickInterval) {\n axis.tickInterval = minTickInterval;\n }\n // For linear axes, normalize the interval\n if (!axis.dateTime && !axis.logarithmic && !tickIntervalOption) {\n axis.tickInterval = getNormalizedTickInterval(axis, axis.tickInterval);\n }\n // Prevent ticks from getting so close that we can't draw the labels\n if (!this.tickAmount) {\n axis.tickInterval = axis.unsquish();\n }\n this.setTickPositions();\n };\n /**\n * Now we have computed the normalized tickInterval, get the tick positions.\n *\n * @private\n * @function Highcharts.Axis#setTickPositions\n *\n * @emits Highcharts.Axis#event:afterSetTickPositions\n */\n Axis.prototype.setTickPositions = function () {\n var axis = this,\n options = this.options,\n tickPositionsOption = options.tickPositions,\n tickPositioner = options.tickPositioner,\n minorTickIntervalOption = this.getMinorTickInterval(),\n hasVerticalPanning = this.hasVerticalPanning(),\n isColorAxis = this.coll === 'colorAxis',\n startOnTick = ((isColorAxis || !hasVerticalPanning) && options.startOnTick),\n endOnTick = ((isColorAxis || !hasVerticalPanning) && options.endOnTick);\n var tickPositions = [],\n tickPositionerResult;\n // Set the tickmarkOffset\n this.tickmarkOffset = (this.categories &&\n options.tickmarkPlacement === 'between' &&\n this.tickInterval === 1) ? 0.5 : 0; // #3202\n // get minorTickInterval\n this.minorTickInterval =\n minorTickIntervalOption === 'auto' &&\n this.tickInterval ?\n this.tickInterval / 5 :\n minorTickIntervalOption;\n // When there is only one point, or all points have the same value on\n // this axis, then min and max are equal and tickPositions.length is 0\n // or 1. In this case, add some padding in order to center the point,\n // but leave it with one tick. #1337.\n this.single =\n this.min === this.max &&\n defined(this.min) &&\n !this.tickAmount &&\n (\n // Data is on integer (#6563)\n parseInt(this.min, 10) === this.min ||\n // Between integers and decimals are not allowed (#6274)\n options.allowDecimals !== false);\n /**\n * Contains the current positions that are laid out on the axis. The\n * positions are numbers in terms of axis values. In a category axis\n * they are integers, in a datetime axis they are also integers, but\n * designating milliseconds.\n *\n * This property is read only - for modifying the tick positions, use\n * the `tickPositioner` callback or [axis.tickPositions(\n * https://api.highcharts.com/highcharts/xAxis.tickPositions) option\n * instead.\n *\n * @name Highcharts.Axis#tickPositions\n * @type {Highcharts.AxisTickPositionsArray|undefined}\n */\n if (tickPositionsOption) {\n // Find the tick positions. Work on a copy (#1565)\n tickPositions = tickPositionsOption.slice();\n }\n else if (isNumber(this.min) && isNumber(this.max)) {\n // Too many ticks (#6405). Create a friendly warning and provide two\n // ticks so at least we can show the data series.\n if ((!axis.ordinal || !axis.ordinal.positions) &&\n ((this.max - this.min) /\n this.tickInterval >\n Math.max(2 * this.len, 200))) {\n tickPositions = [this.min, this.max];\n error(19, false, this.chart);\n }\n else if (axis.dateTime) {\n tickPositions = axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(this.tickInterval, options.units), this.min, this.max, options.startOfWeek, axis.ordinal && axis.ordinal.positions, this.closestPointRange, true);\n }\n else if (axis.logarithmic) {\n tickPositions = axis.logarithmic.getLogTickPositions(this.tickInterval, this.min, this.max);\n }\n else {\n var startingTickInterval = this.tickInterval;\n var adjustedTickInterval = startingTickInterval;\n while (adjustedTickInterval <= startingTickInterval * 2) {\n tickPositions = this.getLinearTickPositions(this.tickInterval, this.min, this.max);\n // If there are more tick positions than the set tickAmount,\n // increase the tickInterval and continue until it fits.\n // (#17100)\n if (this.tickAmount &&\n tickPositions.length > this.tickAmount) {\n this.tickInterval = getNormalizedTickInterval(this, adjustedTickInterval *= 1.1);\n }\n else {\n break;\n }\n }\n }\n // Too dense ticks, keep only the first and last (#4477)\n if (tickPositions.length > this.len) {\n tickPositions = [\n tickPositions[0],\n tickPositions[tickPositions.length - 1]\n ];\n // Reduce doubled value (#7339)\n if (tickPositions[0] === tickPositions[1]) {\n tickPositions.length = 1;\n }\n }\n // Run the tick positioner callback, that allows modifying auto tick\n // positions.\n if (tickPositioner) {\n // Make it available to the positioner\n this.tickPositions = tickPositions;\n tickPositionerResult = tickPositioner.apply(axis, [this.min, this.max]);\n if (tickPositionerResult) {\n tickPositions = tickPositionerResult;\n }\n }\n }\n this.tickPositions = tickPositions;\n // Reset min/max or remove extremes based on start/end on tick\n this.paddedTicks = tickPositions.slice(0); // Used for logarithmic minor\n this.trimTicks(tickPositions, startOnTick, endOnTick);\n if (!this.isLinked && isNumber(this.min) && isNumber(this.max)) {\n // Substract half a unit (#2619, #2846, #2515, #3390), but not in\n // case of multiple ticks (#6897)\n if (this.single &&\n tickPositions.length < 2 &&\n !this.categories &&\n !this.series.some(function (s) {\n return (s.is('heatmap') && s.options.pointPlacement === 'between');\n })) {\n this.min -= 0.5;\n this.max += 0.5;\n }\n if (!tickPositionsOption && !tickPositionerResult) {\n this.adjustTickAmount();\n }\n }\n fireEvent(this, 'afterSetTickPositions');\n };\n /**\n * Handle startOnTick and endOnTick by either adapting to padding min/max or\n * rounded min/max. Also handle single data points.\n *\n * @private\n * @function Highcharts.Axis#trimTicks\n *\n * @param {Array} tickPositions\n * TO-DO: parameter description\n *\n * @param {boolean} [startOnTick]\n * TO-DO: parameter description\n *\n * @param {boolean} [endOnTick]\n * TO-DO: parameter description\n */\n Axis.prototype.trimTicks = function (tickPositions, startOnTick, endOnTick) {\n var roundedMin = tickPositions[0],\n roundedMax = tickPositions[tickPositions.length - 1],\n minPointOffset = (!this.isOrdinal && this.minPointOffset) || 0; // (#12716)\n fireEvent(this, 'trimTicks');\n if (!this.isLinked) {\n if (startOnTick && roundedMin !== -Infinity) { // #6502\n this.min = roundedMin;\n }\n else {\n while (this.min - minPointOffset > tickPositions[0]) {\n tickPositions.shift();\n }\n }\n if (endOnTick) {\n this.max = roundedMax;\n }\n else {\n while (this.max + minPointOffset <\n tickPositions[tickPositions.length - 1]) {\n tickPositions.pop();\n }\n }\n // If no tick are left, set one tick in the middle (#3195)\n if (tickPositions.length === 0 &&\n defined(roundedMin) &&\n !this.options.tickPositions) {\n tickPositions.push((roundedMax + roundedMin) / 2);\n }\n }\n };\n /**\n * Check if there are multiple axes in the same pane.\n *\n * @private\n * @function Highcharts.Axis#alignToOthers\n *\n * @return {boolean|undefined}\n * True if there are other axes.\n */\n Axis.prototype.alignToOthers = function () {\n var axis = this,\n alignedAxes = [this],\n options = axis.options,\n alignThresholds = (this.coll === 'yAxis' &&\n this.chart.options.chart.alignThresholds),\n thresholdAlignments = [];\n var hasOther;\n axis.thresholdAlignment = void 0;\n if ((\n // Only if alignTicks or alignThresholds is true\n (this.chart.options.chart.alignTicks !== false &&\n options.alignTicks) || (alignThresholds)) &&\n // Disabled when startOnTick or endOnTick are false (#7604)\n options.startOnTick !== false &&\n options.endOnTick !== false &&\n // Don't try to align ticks on a log axis, they are not evenly\n // spaced (#6021)\n !axis.logarithmic) {\n // Get a key identifying which pane the axis belongs to\n var getKey_1 = function (axis) {\n var horiz = axis.horiz,\n options = axis.options;\n return [\n horiz ? options.left : options.top,\n options.width,\n options.height,\n options.pane\n ].join(',');\n };\n var thisKey_1 = getKey_1(this);\n this.chart[this.coll].forEach(function (otherAxis) {\n var series = otherAxis.series;\n if (\n // #4442\n series.length &&\n series.some(function (s) { return s.visible; }) &&\n otherAxis !== axis &&\n getKey_1(otherAxis) === thisKey_1) {\n hasOther = true; // #4201\n alignedAxes.push(otherAxis);\n }\n });\n }\n if (hasOther && alignThresholds) {\n // Handle alignThresholds. The `thresholdAlignments` array keeps\n // records of where each axis in the group wants its threshold, from\n // 0 which is on `axis.min`, to 1 which is on `axis.max`.\n alignedAxes.forEach(function (otherAxis) {\n var threshAlign = otherAxis.getThresholdAlignment(axis);\n if (isNumber(threshAlign)) {\n thresholdAlignments.push(threshAlign);\n }\n });\n // For each of the axes in the group, record the average\n // `thresholdAlignment`.\n var thresholdAlignment_1 = thresholdAlignments.length > 1 ?\n thresholdAlignments.reduce(function (sum,\n n) { return (sum += n); }, 0) / thresholdAlignments.length :\n void 0;\n alignedAxes.forEach(function (axis) {\n axis.thresholdAlignment = thresholdAlignment_1;\n });\n }\n return hasOther;\n };\n /**\n * Where the axis wants its threshold, from 0 which is on `axis.min`, to 1 which\n * is on `axis.max`.\n *\n * @private\n * @function Highcharts.Axis#getThresholdAlignment\n */\n Axis.prototype.getThresholdAlignment = function (callerAxis) {\n if (!isNumber(this.dataMin) ||\n (this !== callerAxis &&\n this.series.some(function (s) { return (s.isDirty || s.isDirtyData); }))) {\n this.getSeriesExtremes();\n }\n if (isNumber(this.threshold)) {\n var thresholdAlignment = clamp(((this.threshold - (this.dataMin || 0)) /\n ((this.dataMax || 0) - (this.dataMin || 0))), 0, 1);\n if (this.options.reversed) {\n thresholdAlignment = 1 - thresholdAlignment;\n }\n return thresholdAlignment;\n }\n };\n /**\n * Find the max ticks of either the x and y axis collection, and record it\n * in `this.tickAmount`.\n *\n * @private\n * @function Highcharts.Axis#getTickAmount\n */\n Axis.prototype.getTickAmount = function () {\n var axis = this,\n options = this.options,\n tickPixelInterval = options.tickPixelInterval;\n var tickAmount = options.tickAmount;\n if (!defined(options.tickInterval) &&\n !tickAmount &&\n this.len < tickPixelInterval &&\n !this.isRadial &&\n !axis.logarithmic &&\n options.startOnTick &&\n options.endOnTick) {\n tickAmount = 2;\n }\n if (!tickAmount && this.alignToOthers()) {\n // Add 1 because 4 tick intervals require 5 ticks (including first\n // and last)\n tickAmount = Math.ceil(this.len / tickPixelInterval) + 1;\n }\n // For tick amounts of 2 and 3, compute five ticks and remove the\n // intermediate ones. This prevents the axis from adding ticks that are\n // too far away from the data extremes.\n if (tickAmount < 4) {\n this.finalTickAmt = tickAmount;\n tickAmount = 5;\n }\n this.tickAmount = tickAmount;\n };\n /**\n * When using multiple axes, adjust the number of ticks to match the highest\n * number of ticks in that group.\n *\n * @private\n * @function Highcharts.Axis#adjustTickAmount\n */\n Axis.prototype.adjustTickAmount = function () {\n var axis = this,\n finalTickAmt = axis.finalTickAmt,\n max = axis.max,\n min = axis.min,\n options = axis.options,\n tickPositions = axis.tickPositions,\n tickAmount = axis.tickAmount,\n thresholdAlignment = axis.thresholdAlignment,\n currentTickAmount = tickPositions && tickPositions.length,\n threshold = pick(axis.threshold,\n axis.softThreshold ? 0 : null);\n var len,\n i,\n tickInterval = axis.tickInterval,\n thresholdTickIndex;\n var \n // Extend the tickPositions by appending a position\n append = function () { return tickPositions.push(correctFloat(tickPositions[tickPositions.length - 1] +\n tickInterval)); }, \n // Extend the tickPositions by prepending a position\n prepend = function () { return tickPositions.unshift(correctFloat(tickPositions[0] - tickInterval)); };\n // If `thresholdAlignment` is a number, it means the `alignThresholds`\n // option is true. The `thresholdAlignment` is a scalar value between 0\n // and 1 for where the threshold should be relative to `axis.min` and\n // `axis.max`. Now that we know the tick amount, convert this to the\n // tick index. Unless `thresholdAlignment` is exactly 0 or 1, avoid the\n // first or last tick because that would lead to series being clipped.\n if (isNumber(thresholdAlignment)) {\n thresholdTickIndex = thresholdAlignment < 0.5 ?\n Math.ceil(thresholdAlignment * (tickAmount - 1)) :\n Math.floor(thresholdAlignment * (tickAmount - 1));\n if (options.reversed) {\n thresholdTickIndex = tickAmount - 1 - thresholdTickIndex;\n }\n }\n if (axis.hasData() && isNumber(min) && isNumber(max)) { // #14769\n // Adjust extremes and translation to the modified tick positions\n var adjustExtremes = function () {\n axis.transA *= (currentTickAmount - 1) / (tickAmount - 1);\n // Do not crop when ticks are not extremes (#9841)\n axis.min = options.startOnTick ?\n tickPositions[0] :\n Math.min(min, tickPositions[0]);\n axis.max = options.endOnTick ?\n tickPositions[tickPositions.length - 1] :\n Math.max(max, tickPositions[tickPositions.length - 1]);\n };\n // When the axis is subject to the alignThresholds option. Use\n // axis.threshold because the local threshold includes the\n // `softThreshold`.\n if (isNumber(thresholdTickIndex) && isNumber(axis.threshold)) {\n // Throw away the previously computed tickPositions and start\n // from scratch with only the threshold itself, then add ticks\n // below the threshold first, then fill up above the threshold.\n // If we are not able to fill up to axis.max, double the\n // tickInterval and run again.\n while (tickPositions[thresholdTickIndex] !== threshold ||\n tickPositions.length !== tickAmount ||\n tickPositions[0] > min ||\n tickPositions[tickPositions.length - 1] < max) {\n tickPositions.length = 0;\n tickPositions.push(axis.threshold);\n while (tickPositions.length < tickAmount) {\n if (\n // Start by prepending positions until the threshold\n // is at the required index...\n tickPositions[thresholdTickIndex] === void 0 ||\n tickPositions[thresholdTickIndex] > axis.threshold) {\n prepend();\n }\n else {\n // ... then append positions until we have the\n // required length\n append();\n }\n }\n // Safety vent\n if (tickInterval > axis.tickInterval * 8) {\n break;\n }\n tickInterval *= 2;\n }\n adjustExtremes();\n }\n else if (currentTickAmount < tickAmount) {\n while (tickPositions.length < tickAmount) {\n // Extend evenly for both sides unless we're on the\n // threshold (#3965)\n if (tickPositions.length % 2 || min === threshold) {\n append();\n }\n else {\n prepend();\n }\n }\n adjustExtremes();\n }\n // The finalTickAmt property is set in getTickAmount\n if (defined(finalTickAmt)) {\n i = len = tickPositions.length;\n while (i--) {\n if (\n // Remove every other tick\n (finalTickAmt === 3 && i % 2 === 1) ||\n // Remove all but first and last\n (finalTickAmt <= 2 && i > 0 && i < len - 1)) {\n tickPositions.splice(i, 1);\n }\n }\n axis.finalTickAmt = void 0;\n }\n }\n };\n /**\n * Set the scale based on data min and max, user set min and max or options.\n *\n * @private\n * @function Highcharts.Axis#setScale\n *\n * @emits Highcharts.Axis#event:afterSetScale\n */\n Axis.prototype.setScale = function () {\n var axis = this;\n var isDirtyData = false,\n isXAxisDirty = false;\n axis.series.forEach(function (series) {\n isDirtyData = isDirtyData || series.isDirtyData || series.isDirty;\n // When x axis is dirty, we need new data extremes for y as\n // well:\n isXAxisDirty = (isXAxisDirty ||\n (series.xAxis && series.xAxis.isDirty) ||\n false);\n });\n // set the new axisLength\n axis.setAxisSize();\n var isDirtyAxisLength = axis.len !== (axis.old && axis.old.len);\n // do we really need to go through all this?\n if (isDirtyAxisLength ||\n isDirtyData ||\n isXAxisDirty ||\n axis.isLinked ||\n axis.forceRedraw ||\n axis.userMin !== (axis.old && axis.old.userMin) ||\n axis.userMax !== (axis.old && axis.old.userMax) ||\n axis.alignToOthers()) {\n if (axis.stacking) {\n axis.stacking.resetStacks();\n axis.stacking.buildStacks();\n }\n axis.forceRedraw = false;\n // get data extremes if needed\n axis.getSeriesExtremes();\n // get fixed positions based on tickInterval\n axis.setTickInterval();\n // Mark as dirty if it is not already set to dirty and extremes have\n // changed. #595.\n if (!axis.isDirty) {\n axis.isDirty =\n isDirtyAxisLength ||\n axis.min !== (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n }\n }\n else if (axis.stacking) {\n axis.stacking.cleanStacks();\n }\n // Recalculate panning state object, when the data\n // has changed. It is required when vertical panning is enabled.\n if (isDirtyData && axis.panningState) {\n axis.panningState.isDirty = true;\n }\n fireEvent(this, 'afterSetScale');\n };\n /**\n * Set the minimum and maximum of the axes after render time. If the\n * `startOnTick` and `endOnTick` options are true, the minimum and maximum\n * values are rounded off to the nearest tick. To prevent this, these\n * options can be set to false before calling setExtremes. Also, setExtremes\n * will not allow a range lower than the `minRange` option, which by default\n * is the range of five points.\n *\n * @sample highcharts/members/axis-setextremes/\n * Set extremes from a button\n * @sample highcharts/members/axis-setextremes-datetime/\n * Set extremes on a datetime axis\n * @sample highcharts/members/axis-setextremes-off-ticks/\n * Set extremes off ticks\n * @sample stock/members/axis-setextremes/\n * Set extremes in Highcharts Stock\n *\n * @function Highcharts.Axis#setExtremes\n *\n * @param {number} [newMin]\n * The new minimum value.\n *\n * @param {number} [newMax]\n * The new maximum value.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}\n *\n * @param {boolean|Partial} [animation=true]\n * Enable or modify animations.\n *\n * @param {*} [eventArguments]\n * Arguments to be accessed in event handler.\n *\n * @emits Highcharts.Axis#event:setExtremes\n */\n Axis.prototype.setExtremes = function (newMin, newMax, redraw, animation, eventArguments) {\n var axis = this,\n chart = axis.chart;\n redraw = pick(redraw, true); // defaults to true\n axis.series.forEach(function (serie) {\n delete serie.kdTree;\n });\n // Extend the arguments with min and max\n eventArguments = extend(eventArguments, {\n min: newMin,\n max: newMax\n });\n // Fire the event\n fireEvent(axis, 'setExtremes', eventArguments, function () {\n axis.userMin = newMin;\n axis.userMax = newMax;\n axis.eventArgs = eventArguments;\n if (redraw) {\n chart.redraw(animation);\n }\n });\n };\n /**\n * Overridable method for zooming chart. Pulled out in a separate method to\n * allow overriding in stock charts.\n *\n * @private\n * @function Highcharts.Axis#zoom\n */\n Axis.prototype.zoom = function (newMin, newMax) {\n var axis = this,\n dataMin = this.dataMin,\n dataMax = this.dataMax,\n options = this.options,\n min = Math.min(dataMin,\n pick(options.min,\n dataMin)),\n max = Math.max(dataMax,\n pick(options.max,\n dataMax)),\n evt = {\n newMin: newMin,\n newMax: newMax\n };\n fireEvent(this, 'zoom', evt, function (e) {\n // Use e.newMin and e.newMax - event handlers may have altered them\n var newMin = e.newMin,\n newMax = e.newMax;\n if (newMin !== axis.min || newMax !== axis.max) { // #5790\n // Prevent pinch zooming out of range. Check for defined is for\n // #1946. #1734.\n if (!axis.allowZoomOutside) {\n // #6014, sometimes newMax will be smaller than min (or\n // newMin will be larger than max).\n if (defined(dataMin)) {\n if (newMin < min) {\n newMin = min;\n }\n if (newMin > max) {\n newMin = max;\n }\n }\n if (defined(dataMax)) {\n if (newMax < min) {\n newMax = min;\n }\n if (newMax > max) {\n newMax = max;\n }\n }\n }\n // In full view, displaying the reset zoom button is not\n // required\n axis.displayBtn = (typeof newMin !== 'undefined' ||\n typeof newMax !== 'undefined');\n // Do it\n axis.setExtremes(newMin, newMax, false, void 0, { trigger: 'zoom' });\n }\n e.zoomed = true;\n });\n return evt.zoomed;\n };\n /**\n * Update the axis metrics.\n *\n * @private\n * @function Highcharts.Axis#setAxisSize\n */\n Axis.prototype.setAxisSize = function () {\n var chart = this.chart,\n options = this.options, \n // [top, right, bottom, left]\n offsets = options.offsets || [0, 0, 0, 0],\n horiz = this.horiz, \n // Check for percentage based input values. Rounding fixes problems\n // with column overflow and plot line filtering (#4898, #4899)\n width = this.width = Math.round(relativeLength(pick(options.width,\n chart.plotWidth - offsets[3] + offsets[1]),\n chart.plotWidth)),\n height = this.height = Math.round(relativeLength(pick(options.height,\n chart.plotHeight - offsets[0] + offsets[2]),\n chart.plotHeight)),\n top = this.top = Math.round(relativeLength(pick(options.top,\n chart.plotTop + offsets[0]),\n chart.plotHeight,\n chart.plotTop)),\n left = this.left = Math.round(relativeLength(pick(options.left,\n chart.plotLeft + offsets[3]),\n chart.plotWidth,\n chart.plotLeft));\n // Expose basic values to use in Series object and navigator\n this.bottom = chart.chartHeight - height - top;\n this.right = chart.chartWidth - width - left;\n // Direction agnostic properties\n this.len = Math.max(horiz ? width : height, 0); // Math.max fixes #905\n this.pos = horiz ? left : top; // distance from SVG origin\n };\n /**\n * Get the current extremes for the axis.\n *\n * @sample highcharts/members/axis-getextremes/\n * Report extremes by click on a button\n *\n * @function Highcharts.Axis#getExtremes\n *\n * @return {Highcharts.ExtremesObject}\n * An object containing extremes information.\n */\n Axis.prototype.getExtremes = function () {\n var axis = this,\n log = axis.logarithmic;\n return {\n min: log ?\n correctFloat(log.lin2log(axis.min)) :\n axis.min,\n max: log ?\n correctFloat(log.lin2log(axis.max)) :\n axis.max,\n dataMin: axis.dataMin,\n dataMax: axis.dataMax,\n userMin: axis.userMin,\n userMax: axis.userMax\n };\n };\n /**\n * Get the zero plane either based on zero or on the min or max value.\n * Used in bar and area plots.\n *\n * @function Highcharts.Axis#getThreshold\n *\n * @param {number} threshold\n * The threshold in axis values.\n *\n * @return {number}\n * The translated threshold position in terms of pixels, and corrected to\n * stay within the axis bounds.\n */\n Axis.prototype.getThreshold = function (threshold) {\n var axis = this,\n log = axis.logarithmic,\n realMin = log ? log.lin2log(axis.min) : axis.min,\n realMax = log ? log.lin2log(axis.max) : axis.max;\n if (threshold === null || threshold === -Infinity) {\n threshold = realMin;\n }\n else if (threshold === Infinity) {\n threshold = realMax;\n }\n else if (realMin > threshold) {\n threshold = realMin;\n }\n else if (realMax < threshold) {\n threshold = realMax;\n }\n return axis.translate(threshold, 0, 1, 0, 1);\n };\n /**\n * Compute auto alignment for the axis label based on which side the axis is\n * on and the given rotation for the label.\n *\n * @private\n * @function Highcharts.Axis#autoLabelAlign\n *\n * @param {number} rotation\n * The rotation in degrees as set by either the `rotation` or `autoRotation`\n * options.\n *\n * @return {Highcharts.AlignValue}\n * Can be `\"center\"`, `\"left\"` or `\"right\"`.\n */\n Axis.prototype.autoLabelAlign = function (rotation) {\n var angle = (pick(rotation, 0) - (this.side * 90) + 720) % 360,\n evt = { align: 'center' };\n fireEvent(this, 'autoLabelAlign', evt, function (e) {\n if (angle > 15 && angle < 165) {\n e.align = 'right';\n }\n else if (angle > 195 && angle < 345) {\n e.align = 'left';\n }\n });\n return evt.align;\n };\n /**\n * Get the tick length and width for the axis based on axis options.\n *\n * @private\n * @function Highcharts.Axis#tickSize\n *\n * @param {string} [prefix]\n * 'tick' or 'minorTick'\n *\n * @return {Array|undefined}\n * An array of tickLength and tickWidth\n */\n Axis.prototype.tickSize = function (prefix) {\n var options = this.options,\n tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'], \n // Default to 1 on linear and datetime X axes\n prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);\n var tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'],\n tickSize;\n if (tickWidth && tickLength) {\n // Negate the length\n if (options[prefix + 'Position'] === 'inside') {\n tickLength = -tickLength;\n }\n tickSize = [tickLength, tickWidth];\n }\n var e = { tickSize: tickSize };\n fireEvent(this, 'afterTickSize', e);\n return e.tickSize;\n };\n /**\n * Return the size of the labels.\n *\n * @private\n * @function Highcharts.Axis#labelMetrics\n */\n Axis.prototype.labelMetrics = function () {\n var index = this.tickPositions && this.tickPositions[0] || 0;\n return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize, this.ticks[index] && this.ticks[index].label);\n };\n /**\n * Prevent the ticks from getting so close we can't draw the labels. On a\n * horizontal axis, this is handled by rotating the labels, removing ticks\n * and adding ellipsis. On a vertical axis remove ticks and add ellipsis.\n *\n * @private\n * @function Highcharts.Axis#unsquish\n */\n Axis.prototype.unsquish = function () {\n var labelOptions = this.options.labels,\n horiz = this.horiz,\n tickInterval = this.tickInterval,\n slotSize = this.len / (((this.categories ? 1 : 0) +\n this.max -\n this.min) /\n tickInterval),\n rotationOption = labelOptions.rotation,\n labelMetrics = this.labelMetrics(),\n range = Math.max(this.max - this.min, 0), \n // Return the multiple of tickInterval that is needed to avoid\n // collision\n getStep = function (spaceNeeded) {\n var step = spaceNeeded / (slotSize || 1);\n step = step > 1 ? Math.ceil(step) : 1;\n // Guard for very small or negative angles (#9835)\n if (step * tickInterval > range &&\n spaceNeeded !== Infinity &&\n slotSize !== Infinity &&\n range) {\n step = Math.ceil(range / tickInterval);\n }\n return correctFloat(step * tickInterval);\n };\n var newTickInterval = tickInterval,\n rotation,\n bestScore = Number.MAX_VALUE,\n autoRotation;\n if (horiz) {\n if (!labelOptions.staggerLines) {\n if (isNumber(rotationOption)) {\n autoRotation = [rotationOption];\n }\n else if (slotSize < labelOptions.autoRotationLimit) {\n autoRotation = labelOptions.autoRotation;\n }\n }\n if (autoRotation) {\n var step = void 0,\n score = void 0;\n // Loop over the given autoRotation options, and determine which\n // gives the best score. The best score is that with the lowest\n // number of steps and a rotation closest to horizontal.\n for (var _i = 0, autoRotation_1 = autoRotation; _i < autoRotation_1.length; _i++) {\n var rot = autoRotation_1[_i];\n if (rot === rotationOption ||\n (rot && rot >= -90 && rot <= 90)) { // #3891\n step = getStep(Math.abs(labelMetrics.h / Math.sin(deg2rad * rot)));\n score = step + Math.abs(rot / 360);\n if (score < bestScore) {\n bestScore = score;\n rotation = rot;\n newTickInterval = step;\n }\n }\n }\n }\n }\n else { // #4411\n newTickInterval = getStep(labelMetrics.h);\n }\n this.autoRotation = autoRotation;\n this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);\n return labelOptions.step ? tickInterval : newTickInterval;\n };\n /**\n * Get the general slot width for labels/categories on this axis. This may\n * change between the pre-render (from Axis.getOffset) and the final tick\n * rendering and placement.\n *\n * @private\n * @function Highcharts.Axis#getSlotWidth\n *\n * @param {Highcharts.Tick} [tick] Optionally, calculate the slot width\n * basing on tick label. It is used in highcharts-3d module, where the slots\n * has different widths depending on perspective angles.\n *\n * @return {number}\n * The pixel width allocated to each axis label.\n */\n Axis.prototype.getSlotWidth = function (tick) {\n // #5086, #1580, #1931\n var chart = this.chart,\n horiz = this.horiz,\n labelOptions = this.options.labels,\n slotCount = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1),\n marginLeft = chart.margin[3];\n // Used by grid axis\n if (tick && isNumber(tick.slotWidth)) { // #13221, can be 0\n return tick.slotWidth;\n }\n if (horiz && labelOptions.step < 2) {\n if (labelOptions.rotation) { // #4415\n return 0;\n }\n return ((this.staggerLines || 1) * this.len) / slotCount;\n }\n if (!horiz) {\n // #7028\n var cssWidth = labelOptions.style.width;\n if (cssWidth !== void 0) {\n return parseInt(String(cssWidth), 10);\n }\n if (marginLeft) {\n return marginLeft - chart.spacing[3];\n }\n }\n // Last resort, a fraction of the available size\n return chart.chartWidth * 0.33;\n };\n /**\n * Render the axis labels and determine whether ellipsis or rotation need to\n * be applied.\n *\n * @private\n * @function Highcharts.Axis#renderUnsquish\n */\n Axis.prototype.renderUnsquish = function () {\n var chart = this.chart,\n renderer = chart.renderer,\n tickPositions = this.tickPositions,\n ticks = this.ticks,\n labelOptions = this.options.labels,\n labelStyleOptions = labelOptions.style,\n horiz = this.horiz,\n slotWidth = this.getSlotWidth(),\n innerWidth = Math.max(1,\n Math.round(slotWidth - 2 * labelOptions.padding)),\n attr = {},\n labelMetrics = this.labelMetrics(),\n textOverflowOption = labelStyleOptions.textOverflow;\n var commonWidth,\n commonTextOverflow,\n maxLabelLength = 0,\n label,\n i,\n pos;\n // Set rotation option unless it is \"auto\", like in gauges\n if (!isString(labelOptions.rotation)) {\n // #4443\n attr.rotation = labelOptions.rotation || 0;\n }\n // Get the longest label length\n tickPositions.forEach(function (tickPosition) {\n var tick = ticks[tickPosition];\n // Replace label - sorting animation\n if (tick.movedLabel) {\n tick.replaceMovedLabel();\n }\n if (tick &&\n tick.label &&\n tick.label.textPxLength > maxLabelLength) {\n maxLabelLength = tick.label.textPxLength;\n }\n });\n this.maxLabelLength = maxLabelLength;\n // Handle auto rotation on horizontal axis\n if (this.autoRotation) {\n // Apply rotation only if the label is too wide for the slot, and\n // the label is wider than its height.\n if (maxLabelLength > innerWidth &&\n maxLabelLength > labelMetrics.h) {\n attr.rotation = this.labelRotation;\n }\n else {\n this.labelRotation = 0;\n }\n // Handle word-wrap or ellipsis on vertical axis\n }\n else if (slotWidth) {\n // For word-wrap or ellipsis\n commonWidth = innerWidth;\n if (!textOverflowOption) {\n commonTextOverflow = 'clip';\n // On vertical axis, only allow word wrap if there is room\n // for more lines.\n i = tickPositions.length;\n while (!horiz && i--) {\n pos = tickPositions[i];\n label = ticks[pos].label;\n if (label) {\n // Reset ellipsis in order to get the correct\n // bounding box (#4070)\n if (label.styles &&\n label.styles.textOverflow === 'ellipsis') {\n label.css({ textOverflow: 'clip' });\n // Set the correct width in order to read\n // the bounding box height (#4678, #5034)\n }\n else if (label.textPxLength > slotWidth) {\n label.css({ width: slotWidth + 'px' });\n }\n if (label.getBBox().height > (this.len / tickPositions.length -\n (labelMetrics.h - labelMetrics.f))) {\n label.specificTextOverflow = 'ellipsis';\n }\n }\n }\n }\n }\n // Add ellipsis if the label length is significantly longer than ideal\n if (attr.rotation) {\n commonWidth = (maxLabelLength > chart.chartHeight * 0.5 ?\n chart.chartHeight * 0.33 :\n maxLabelLength);\n if (!textOverflowOption) {\n commonTextOverflow = 'ellipsis';\n }\n }\n // Set the explicit or automatic label alignment\n this.labelAlign = labelOptions.align ||\n this.autoLabelAlign(this.labelRotation);\n if (this.labelAlign) {\n attr.align = this.labelAlign;\n }\n // Apply general and specific CSS\n tickPositions.forEach(function (pos) {\n var tick = ticks[pos],\n label = tick && tick.label,\n widthOption = labelStyleOptions.width,\n css = {};\n if (label) {\n // This needs to go before the CSS in old IE (#4502)\n label.attr(attr);\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else if (commonWidth &&\n !widthOption &&\n // Setting width in this case messes with the bounding box\n // (#7975)\n labelStyleOptions.whiteSpace !== 'nowrap' &&\n (\n // Speed optimizing, #7656\n commonWidth < label.textPxLength ||\n // Resetting CSS, #4928\n label.element.tagName === 'SPAN')) {\n css.width = commonWidth + 'px';\n if (!textOverflowOption) {\n css.textOverflow = (label.specificTextOverflow ||\n commonTextOverflow);\n }\n label.css(css);\n // Reset previously shortened label (#8210)\n }\n else if (label.styles &&\n label.styles.width &&\n !css.width &&\n !widthOption) {\n label.css({ width: null });\n }\n delete label.specificTextOverflow;\n tick.rotation = attr.rotation;\n }\n }, this);\n // Note: Why is this not part of getLabelPosition?\n this.tickRotCorr = renderer.rotCorr(labelMetrics.b, this.labelRotation || 0, this.side !== 0);\n };\n /**\n * Return true if the axis has associated data.\n *\n * @function Highcharts.Axis#hasData\n *\n * @return {boolean}\n * True if the axis has associated visible series and those series have\n * either valid data points or explicit `min` and `max` settings.\n */\n Axis.prototype.hasData = function () {\n return this.series.some(function (s) {\n return s.hasData();\n }) ||\n (this.options.showEmpty &&\n defined(this.min) &&\n defined(this.max));\n };\n /**\n * Adds the title defined in axis.options.title.\n *\n * @function Highcharts.Axis#addTitle\n *\n * @param {boolean} [display]\n * Whether or not to display the title.\n */\n Axis.prototype.addTitle = function (display) {\n var axis = this,\n renderer = axis.chart.renderer,\n horiz = axis.horiz,\n opposite = axis.opposite,\n options = axis.options,\n axisTitleOptions = options.title,\n styledMode = axis.chart.styledMode;\n var textAlign;\n if (!axis.axisTitle) {\n textAlign = axisTitleOptions.textAlign;\n if (!textAlign) {\n textAlign = (horiz ? {\n low: 'left',\n middle: 'center',\n high: 'right'\n } : {\n low: opposite ? 'right' : 'left',\n middle: 'center',\n high: opposite ? 'left' : 'right'\n })[axisTitleOptions.align];\n }\n axis.axisTitle = renderer\n .text(axisTitleOptions.text || '', 0, 0, axisTitleOptions.useHTML)\n .attr({\n zIndex: 7,\n rotation: axisTitleOptions.rotation,\n align: textAlign\n })\n .addClass('highcharts-axis-title');\n // #7814, don't mutate style option\n if (!styledMode) {\n axis.axisTitle.css(merge(axisTitleOptions.style));\n }\n axis.axisTitle.add(axis.axisGroup);\n axis.axisTitle.isNew = true;\n }\n // Max width defaults to the length of the axis\n if (!styledMode &&\n !axisTitleOptions.style.width &&\n !axis.isRadial) {\n axis.axisTitle.css({\n width: axis.len + 'px'\n });\n }\n // hide or show the title depending on whether showEmpty is set\n axis.axisTitle[display ? 'show' : 'hide'](display);\n };\n /**\n * Generates a tick for initial positioning.\n *\n * @private\n * @function Highcharts.Axis#generateTick\n *\n * @param {number} pos\n * The tick position in axis values.\n *\n * @param {number} [i]\n * The index of the tick in {@link Axis.tickPositions}.\n */\n Axis.prototype.generateTick = function (pos) {\n var axis = this,\n ticks = axis.ticks;\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n else {\n ticks[pos].addLabel(); // update labels depending on tick interval\n }\n };\n /**\n * Render the tick labels to a preliminary position to get their sizes\n *\n * @private\n * @function Highcharts.Axis#getOffset\n *\n * @emits Highcharts.Axis#event:afterGetOffset\n */\n Axis.prototype.getOffset = function () {\n var _this = this;\n var axis = this,\n chart = axis.chart,\n horiz = axis.horiz,\n options = axis.options,\n side = axis.side,\n ticks = axis.ticks,\n tickPositions = axis.tickPositions,\n coll = axis.coll,\n axisParent = axis.axisParent // Used in color axis\n ,\n renderer = chart.renderer,\n invertedSide = (chart.inverted && !axis.isZAxis ?\n [1, 0, 3, 2][side] :\n side),\n hasData = axis.hasData(),\n axisTitleOptions = options.title,\n labelOptions = options.labels,\n axisOffset = chart.axisOffset,\n clipOffset = chart.clipOffset,\n directionFactor = [-1, 1, 1, -1][side],\n className = options.className;\n var showAxis,\n titleOffset = 0,\n titleOffsetOption,\n titleMargin = 0,\n labelOffset = 0, // reset\n labelOffsetPadded,\n lineHeightCorrection;\n // For reuse in Axis.render\n axis.showAxis = showAxis = hasData || options.showEmpty;\n // Set/reset staggerLines\n axis.staggerLines = (axis.horiz && labelOptions.staggerLines) || void 0;\n // Create the axisGroup and gridGroup elements on first iteration\n if (!axis.axisGroup) {\n var createGroup = function (name, suffix, zIndex) { return renderer.g(name)\n .attr({ zIndex: zIndex })\n .addClass(\"highcharts-\".concat(coll.toLowerCase()).concat(suffix, \" \") +\n (_this.isRadial ? \"highcharts-radial-axis\".concat(suffix, \" \") : '') +\n (className || ''))\n .add(axisParent); };\n axis.gridGroup = createGroup('grid', '-grid', options.gridZIndex);\n axis.axisGroup = createGroup('axis', '', options.zIndex);\n axis.labelGroup = createGroup('axis-labels', '-labels', labelOptions.zIndex);\n }\n if (hasData || axis.isLinked) {\n // Generate ticks\n tickPositions.forEach(function (pos) {\n // i is not used here, but may be used in overrides\n axis.generateTick(pos);\n });\n axis.renderUnsquish();\n // Left side must be align: right and right side must\n // have align: left for labels\n axis.reserveSpaceDefault = (side === 0 ||\n side === 2 ||\n { 1: 'left', 3: 'right' }[side] === axis.labelAlign);\n if (pick(labelOptions.reserveSpace, axis.labelAlign === 'center' ? true : null, axis.reserveSpaceDefault)) {\n tickPositions.forEach(function (pos) {\n // get the highest offset\n labelOffset = Math.max(ticks[pos].getLabelSize(), labelOffset);\n });\n }\n if (axis.staggerLines) {\n labelOffset *= axis.staggerLines;\n }\n axis.labelOffset = labelOffset * (axis.opposite ? -1 : 1);\n }\n else { // doesn't have data\n objectEach(ticks, function (tick, n) {\n tick.destroy();\n delete ticks[n];\n });\n }\n if (axisTitleOptions &&\n axisTitleOptions.text &&\n axisTitleOptions.enabled !== false) {\n axis.addTitle(showAxis);\n if (showAxis && axisTitleOptions.reserveSpace !== false) {\n axis.titleOffset = titleOffset =\n axis.axisTitle.getBBox()[horiz ? 'height' : 'width'];\n titleOffsetOption = axisTitleOptions.offset;\n titleMargin = defined(titleOffsetOption) ?\n 0 :\n pick(axisTitleOptions.margin, horiz ? 5 : 10);\n }\n }\n // Render the axis line\n axis.renderLine();\n // handle automatic or user set offset\n axis.offset = directionFactor * pick(options.offset, axisOffset[side] ? axisOffset[side] + (options.margin || 0) : 0);\n axis.tickRotCorr = axis.tickRotCorr || { x: 0, y: 0 }; // polar\n if (side === 0) {\n lineHeightCorrection = -axis.labelMetrics().h;\n }\n else if (side === 2) {\n lineHeightCorrection = axis.tickRotCorr.y;\n }\n else {\n lineHeightCorrection = 0;\n }\n // Find the padded label offset\n labelOffsetPadded = Math.abs(labelOffset) + titleMargin;\n if (labelOffset) {\n labelOffsetPadded -= lineHeightCorrection;\n labelOffsetPadded += directionFactor * (horiz ?\n pick(labelOptions.y, axis.tickRotCorr.y + directionFactor * 8) :\n labelOptions.x);\n }\n axis.axisTitleMargin = pick(titleOffsetOption, labelOffsetPadded);\n if (axis.getMaxLabelDimensions) {\n axis.maxLabelDimensions = axis.getMaxLabelDimensions(ticks, tickPositions);\n }\n // Due to GridAxis.tickSize, tickSize should be calculated after ticks\n // has rendered.\n if (coll !== 'colorAxis') {\n var tickSize = this.tickSize('tick');\n axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +\n directionFactor * axis.offset, labelOffsetPadded, // #3027\n tickPositions && tickPositions.length && tickSize ?\n tickSize[0] + directionFactor * axis.offset :\n 0 // #4866\n );\n // Decide the clipping needed to keep the graph inside\n // the plot area and axis lines\n var clip = !axis.axisLine || options.offset ?\n 0 :\n // #4308, #4371:\n Math.floor(axis.axisLine.strokeWidth() / 2) * 2;\n clipOffset[invertedSide] =\n Math.max(clipOffset[invertedSide], clip);\n }\n fireEvent(this, 'afterGetOffset');\n };\n /**\n * Internal function to get the path for the axis line. Extended for polar\n * charts.\n *\n * @function Highcharts.Axis#getLinePath\n *\n * @param {number} lineWidth\n * The line width in pixels.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Axis.prototype.getLinePath = function (lineWidth) {\n var chart = this.chart,\n opposite = this.opposite,\n offset = this.offset,\n horiz = this.horiz,\n lineLeft = this.left + (opposite ? this.width : 0) + offset,\n lineTop = chart.chartHeight - this.bottom -\n (opposite ? this.height : 0) + offset;\n if (opposite) {\n lineWidth *= -1; // crispify the other way - #1480, #1687\n }\n return chart.renderer\n .crispLine([\n [\n 'M',\n horiz ?\n this.left :\n lineLeft,\n horiz ?\n lineTop :\n this.top\n ],\n [\n 'L',\n horiz ?\n chart.chartWidth - this.right :\n lineLeft,\n horiz ?\n lineTop :\n chart.chartHeight - this.bottom\n ]\n ], lineWidth);\n };\n /**\n * Render the axis line. Called internally when rendering and redrawing the\n * axis.\n *\n * @function Highcharts.Axis#renderLine\n */\n Axis.prototype.renderLine = function () {\n if (!this.axisLine) {\n this.axisLine = this.chart.renderer.path()\n .addClass('highcharts-axis-line')\n .add(this.axisGroup);\n if (!this.chart.styledMode) {\n this.axisLine.attr({\n stroke: this.options.lineColor,\n 'stroke-width': this.options.lineWidth,\n zIndex: 7\n });\n }\n }\n };\n /**\n * Position the axis title.\n *\n * @private\n * @function Highcharts.Axis#getTitlePosition\n *\n * @return {Highcharts.PositionObject}\n * X and Y positions for the title.\n */\n Axis.prototype.getTitlePosition = function () {\n // compute anchor points for each of the title align options\n var horiz = this.horiz,\n axisLeft = this.left,\n axisTop = this.top,\n axisLength = this.len,\n axisTitleOptions = this.options.title,\n margin = horiz ? axisLeft : axisTop,\n opposite = this.opposite,\n offset = this.offset,\n xOption = axisTitleOptions.x,\n yOption = axisTitleOptions.y,\n axisTitle = this.axisTitle,\n fontMetrics = this.chart.renderer.fontMetrics(axisTitleOptions.style.fontSize,\n axisTitle), \n // The part of a multiline text that is below the baseline of the\n // first line. Subtract 1 to preserve pixel-perfectness from the\n // old behaviour (v5.0.12), where only one line was allowed.\n textHeightOvershoot = axisTitle ? Math.max(axisTitle.getBBox(false, 0).height - fontMetrics.h - 1, 0) : 0, \n // the position in the length direction of the axis\n alongAxis = ({\n low: margin + (horiz ? 0 : axisLength),\n middle: margin + axisLength / 2,\n high: margin + (horiz ? axisLength : 0)\n })[axisTitleOptions.align], \n // the position in the perpendicular direction of the axis\n offAxis = (horiz ? axisTop + this.height : axisLeft) +\n (horiz ? 1 : -1) * // horizontal axis reverses the margin\n (opposite ? -1 : 1) * // so does opposite axes\n (this.axisTitleMargin || 0) +\n [\n -textHeightOvershoot,\n textHeightOvershoot,\n fontMetrics.f,\n -textHeightOvershoot // left\n ][this.side],\n titlePosition = {\n x: horiz ?\n alongAxis + xOption :\n offAxis + (opposite ? this.width : 0) + offset + xOption,\n y: horiz ?\n offAxis + yOption - (opposite ? this.height : 0) + offset :\n alongAxis + yOption\n };\n fireEvent(this, 'afterGetTitlePosition', { titlePosition: titlePosition });\n return titlePosition;\n };\n /**\n * Render a minor tick into the given position. If a minor tick already\n * exists in this position, move it.\n *\n * @function Highcharts.Axis#renderMinorTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderMinorTick = function (pos, slideIn) {\n var axis = this;\n var minorTicks = axis.minorTicks;\n if (!minorTicks[pos]) {\n minorTicks[pos] = new Tick(axis, pos, 'minor');\n }\n // Render new ticks in old position\n if (slideIn && minorTicks[pos].isNew) {\n minorTicks[pos].render(null, true);\n }\n minorTicks[pos].render(null, false, 1);\n };\n /**\n * Render a major tick into the given position. If a tick already exists\n * in this position, move it.\n *\n * @function Highcharts.Axis#renderTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {number} i\n * The tick index.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderTick = function (pos, i, slideIn) {\n var axis = this,\n isLinked = axis.isLinked,\n ticks = axis.ticks;\n // Linked axes need an extra check to find out if\n if (!isLinked ||\n (pos >= axis.min && pos <= axis.max) ||\n (axis.grid && axis.grid.isColumn)) {\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n // NOTE this seems like overkill. Could be handled in tick.render by\n // setting old position in attr, then set new position in animate.\n // render new ticks in old position\n if (slideIn && ticks[pos].isNew) {\n // Start with negative opacity so that it is visible from\n // halfway into the animation\n ticks[pos].render(i, true, -1);\n }\n ticks[pos].render(i);\n }\n };\n /**\n * Render the axis.\n *\n * @private\n * @function Highcharts.Axis#render\n *\n * @emits Highcharts.Axis#event:afterRender\n */\n Axis.prototype.render = function () {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n renderer = chart.renderer,\n options = axis.options,\n isLinked = axis.isLinked,\n tickPositions = axis.tickPositions,\n axisTitle = axis.axisTitle,\n ticks = axis.ticks,\n minorTicks = axis.minorTicks,\n alternateBands = axis.alternateBands,\n stackLabelOptions = options.stackLabels,\n alternateGridColor = options.alternateGridColor,\n tickmarkOffset = axis.tickmarkOffset,\n axisLine = axis.axisLine,\n showAxis = axis.showAxis,\n animation = animObject(renderer.globalAnimation);\n var from,\n to;\n // Reset\n axis.labelEdge.length = 0;\n axis.overlap = false;\n // Mark all elements inActive before we go over and mark the active ones\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n objectEach(coll, function (tick) {\n tick.isActive = false;\n });\n });\n // If the series has data draw the ticks. Else only the line and title\n if (axis.hasData() || isLinked) {\n var slideInTicks_1 = axis.chart.hasRendered &&\n axis.old && isNumber(axis.old.min);\n // minor ticks\n if (axis.minorTickInterval && !axis.categories) {\n axis.getMinorTickPositions().forEach(function (pos) {\n axis.renderMinorTick(pos, slideInTicks_1);\n });\n }\n // Major ticks. Pull out the first item and render it last so that\n // we can get the position of the neighbour label. #808.\n if (tickPositions.length) { // #1300\n tickPositions.forEach(function (pos, i) {\n axis.renderTick(pos, i, slideInTicks_1);\n });\n // In a categorized axis, the tick marks are displayed\n // between labels. So we need to add a tick mark and\n // grid line at the left edge of the X axis.\n if (tickmarkOffset && (axis.min === 0 || axis.single)) {\n if (!ticks[-1]) {\n ticks[-1] = new Tick(axis, -1, null, true);\n }\n ticks[-1].render(-1);\n }\n }\n // alternate grid color\n if (alternateGridColor) {\n tickPositions.forEach(function (pos, i) {\n to = typeof tickPositions[i + 1] !== 'undefined' ?\n tickPositions[i + 1] + tickmarkOffset :\n axis.max - tickmarkOffset;\n if (i % 2 === 0 &&\n pos < axis.max &&\n to <= axis.max + (chart.polar ?\n -tickmarkOffset :\n tickmarkOffset)) { // #2248, #4660\n if (!alternateBands[pos]) {\n // Should be imported from PlotLineOrBand.js, but\n // the dependency cycle with axis is a problem\n alternateBands[pos] = new H.PlotLineOrBand(axis);\n }\n from = pos + tickmarkOffset; // #949\n alternateBands[pos].options = {\n from: log ? log.lin2log(from) : from,\n to: log ? log.lin2log(to) : to,\n color: alternateGridColor,\n className: 'highcharts-alternate-grid'\n };\n alternateBands[pos].render();\n alternateBands[pos].isActive = true;\n }\n });\n }\n // custom plot lines and bands\n if (!axis._addedPlotLB) { // only first time\n axis._addedPlotLB = true;\n (options.plotLines || [])\n .concat(options.plotBands || [])\n .forEach(function (plotLineOptions) {\n axis\n .addPlotBandOrLine(plotLineOptions);\n });\n }\n } // end if hasData\n // Remove inactive ticks\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n var forDestruction = [],\n delay = animation.duration,\n destroyInactiveItems = function () {\n var i = forDestruction.length;\n while (i--) {\n // When resizing rapidly, the same items\n // may be destroyed in different timeouts,\n // or the may be reactivated\n if (coll[forDestruction[i]] &&\n !coll[forDestruction[i]].isActive) {\n coll[forDestruction[i]].destroy();\n delete coll[forDestruction[i]];\n }\n }\n };\n objectEach(coll, function (tick, pos) {\n if (!tick.isActive) {\n // Render to zero opacity\n tick.render(pos, false, 0);\n tick.isActive = false;\n forDestruction.push(pos);\n }\n });\n // When the objects are finished fading out, destroy them\n syncTimeout(destroyInactiveItems, coll === alternateBands ||\n !chart.hasRendered ||\n !delay ?\n 0 :\n delay);\n });\n // Set the axis line path\n if (axisLine) {\n axisLine[axisLine.isPlaced ? 'animate' : 'attr']({\n d: this.getLinePath(axisLine.strokeWidth())\n });\n axisLine.isPlaced = true;\n // Show or hide the line depending on options.showEmpty\n axisLine[showAxis ? 'show' : 'hide'](showAxis);\n }\n if (axisTitle && showAxis) {\n var titleXy = axis.getTitlePosition();\n axisTitle[axisTitle.isNew ? 'attr' : 'animate'](titleXy);\n axisTitle.isNew = false;\n }\n // Stacked totals:\n if (stackLabelOptions && stackLabelOptions.enabled && axis.stacking) {\n axis.stacking.renderStackTotals();\n }\n // End stacked totals\n // Record old scaling for updating/animation\n axis.old = {\n len: axis.len,\n max: axis.max,\n min: axis.min,\n transA: axis.transA,\n userMax: axis.userMax,\n userMin: axis.userMin\n };\n axis.isDirty = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Redraw the axis to reflect changes in the data or axis extremes. Called\n * internally from Highcharts.Chart#redraw.\n *\n * @private\n * @function Highcharts.Axis#redraw\n */\n Axis.prototype.redraw = function () {\n if (this.visible) {\n // render the axis\n this.render();\n // move plot lines and bands\n this.plotLinesAndBands.forEach(function (plotLine) {\n plotLine.render();\n });\n }\n // mark associated series as dirty and ready for redraw\n this.series.forEach(function (series) {\n series.isDirty = true;\n });\n };\n /**\n * Returns an array of axis properties, that should be untouched during\n * reinitialization.\n *\n * @private\n * @function Highcharts.Axis#getKeepProps\n */\n Axis.prototype.getKeepProps = function () {\n return (this.keepProps || Axis.keepProps);\n };\n /**\n * Destroys an Axis instance. See {@link Axis#remove} for the API endpoint\n * to fully remove the axis.\n *\n * @private\n * @function Highcharts.Axis#destroy\n *\n * @param {boolean} [keepEvents]\n * Whether to preserve events, used internally in Axis.update.\n */\n Axis.prototype.destroy = function (keepEvents) {\n var axis = this,\n plotLinesAndBands = axis.plotLinesAndBands,\n eventOptions = this.eventOptions;\n fireEvent(this, 'destroy', { keepEvents: keepEvents });\n // Remove the events\n if (!keepEvents) {\n removeEvent(axis);\n }\n // Destroy collections\n [axis.ticks, axis.minorTicks, axis.alternateBands].forEach(function (coll) {\n destroyObjectProperties(coll);\n });\n if (plotLinesAndBands) {\n var i = plotLinesAndBands.length;\n while (i--) { // #1975\n plotLinesAndBands[i].destroy();\n }\n }\n // Destroy elements\n ['axisLine', 'axisTitle', 'axisGroup',\n 'gridGroup', 'labelGroup', 'cross', 'scrollbar'].forEach(function (prop) {\n if (axis[prop]) {\n axis[prop] = axis[prop].destroy();\n }\n });\n // Destroy each generated group for plotlines and plotbands\n for (var plotGroup in axis.plotLinesAndBandsGroups) { // eslint-disable-line guard-for-in\n axis.plotLinesAndBandsGroups[plotGroup] =\n axis.plotLinesAndBandsGroups[plotGroup].destroy();\n }\n // Delete all properties and fall back to the prototype.\n objectEach(axis, function (val, key) {\n if (axis.getKeepProps().indexOf(key) === -1) {\n delete axis[key];\n }\n });\n this.eventOptions = eventOptions;\n };\n /**\n * Internal function to draw a crosshair.\n *\n * @function Highcharts.Axis#drawCrosshair\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments from the modified pointer event, extended with\n * `chartX` and `chartY`\n *\n * @param {Highcharts.Point} [point]\n * The Point object if the crosshair snaps to points.\n *\n * @emits Highcharts.Axis#event:afterDrawCrosshair\n * @emits Highcharts.Axis#event:drawCrosshair\n */\n Axis.prototype.drawCrosshair = function (e, point) {\n var options = this.crosshair,\n snap = pick(options && options.snap,\n true),\n chart = this.chart;\n var path,\n pos,\n categorized,\n graphic = this.cross,\n crossOptions;\n fireEvent(this, 'drawCrosshair', { e: e, point: point });\n // Use last available event when updating non-snapped crosshairs without\n // mouse interaction (#5287)\n if (!e) {\n e = this.cross && this.cross.e;\n }\n if (\n // Disabled in options\n !options ||\n // Snap\n ((defined(point) || !snap) === false)) {\n this.hideCrosshair();\n }\n else {\n // Get the path\n if (!snap) {\n pos = e &&\n (this.horiz ?\n e.chartX - this.pos :\n this.len - e.chartY + this.pos);\n }\n else if (defined(point)) {\n // #3834\n pos = pick(this.coll !== 'colorAxis' ?\n point.crosshairPos : // 3D axis extension\n null, this.isXAxis ?\n point.plotX :\n this.len - point.plotY);\n }\n if (defined(pos)) {\n crossOptions = {\n // value, only used on radial\n value: point && (this.isXAxis ?\n point.x :\n pick(point.stackY, point.y)),\n translatedValue: pos\n };\n if (chart.polar) {\n // Additional information required for crosshairs in\n // polar chart\n extend(crossOptions, {\n isCrosshair: true,\n chartX: e && e.chartX,\n chartY: e && e.chartY,\n point: point\n });\n }\n path = this.getPlotLinePath(crossOptions) ||\n null; // #3189\n }\n if (!defined(path)) {\n this.hideCrosshair();\n return;\n }\n categorized = this.categories && !this.isRadial;\n // Draw the cross\n if (!graphic) {\n this.cross = graphic = chart.renderer\n .path()\n .addClass('highcharts-crosshair highcharts-crosshair-' +\n (categorized ? 'category ' : 'thin ') +\n (options.className || ''))\n .attr({\n zIndex: pick(options.zIndex, 2)\n })\n .add();\n // Presentational attributes\n if (!chart.styledMode) {\n graphic.attr({\n stroke: options.color ||\n (categorized ?\n Color\n .parse(\"#ccd6eb\" /* Palette.highlightColor20 */)\n .setOpacity(0.25)\n .get() :\n \"#cccccc\" /* Palette.neutralColor20 */),\n 'stroke-width': pick(options.width, 1)\n }).css({\n 'pointer-events': 'none'\n });\n if (options.dashStyle) {\n graphic.attr({\n dashstyle: options.dashStyle\n });\n }\n }\n }\n graphic.show().attr({\n d: path\n });\n if (categorized && !options.width) {\n graphic.attr({\n 'stroke-width': this.transA\n });\n }\n this.cross.e = e;\n }\n fireEvent(this, 'afterDrawCrosshair', { e: e, point: point });\n };\n /**\n * Hide the crosshair if visible.\n *\n * @function Highcharts.Axis#hideCrosshair\n */\n Axis.prototype.hideCrosshair = function () {\n if (this.cross) {\n this.cross.hide();\n }\n fireEvent(this, 'afterHideCrosshair');\n };\n /**\n * Check whether the chart has vertical panning ('y' or 'xy' type).\n *\n * @private\n * @function Highcharts.Axis#hasVerticalPanning\n */\n Axis.prototype.hasVerticalPanning = function () {\n var panningOptions = this.chart.options.chart.panning;\n return Boolean(panningOptions &&\n panningOptions.enabled && // #14624\n /y/.test(panningOptions.type));\n };\n /**\n * Check whether the given value is a positive valid axis value.\n *\n * @private\n * @function Highcharts.Axis#validatePositiveValue\n *\n * @param {unknown} value\n * The axis value\n */\n Axis.prototype.validatePositiveValue = function (value) {\n return isNumber(value) && value > 0;\n };\n /**\n * Update an axis object with a new set of options. The options are merged\n * with the existing options, so only new or altered options need to be\n * specified.\n *\n * @sample highcharts/members/axis-update/\n * Axis update demo\n *\n * @function Highcharts.Axis#update\n *\n * @param {Highcharts.AxisOptions} options\n * The new options that will be merged in with existing options on the axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n Axis.prototype.update = function (options, redraw) {\n var chart = this.chart;\n options = merge(this.userOptions, options);\n this.destroy(true);\n this.init(chart, options);\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Remove the axis from the chart.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Axis#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart following the remove.\n */\n Axis.prototype.remove = function (redraw) {\n var chart = this.chart,\n key = this.coll, // xAxis or yAxis\n axisSeries = this.series;\n var i = axisSeries.length;\n // Remove associated series (#2687)\n while (i--) {\n if (axisSeries[i]) {\n axisSeries[i].remove(false);\n }\n }\n // Remove the axis\n erase(chart.axes, this);\n erase(chart[key], this);\n chart[key].forEach(function (axis, i) {\n // Re-index, #1706, #8075\n axis.options.index = axis.userOptions.index = i;\n });\n this.destroy();\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Update the axis title by options after render time.\n *\n * @sample highcharts/members/axis-settitle/\n * Set a new Y axis title\n *\n * @function Highcharts.Axis#setTitle\n *\n * @param {Highcharts.AxisTitleOptions} titleOptions\n * The additional title options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after setting the title.\n */\n Axis.prototype.setTitle = function (titleOptions, redraw) {\n this.update({ title: titleOptions }, redraw);\n };\n /**\n * Set new axis categories and optionally redraw.\n *\n * @sample highcharts/members/axis-setcategories/\n * Set categories by click on a button\n *\n * @function Highcharts.Axis#setCategories\n *\n * @param {Array} categories\n * The new categories.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n */\n Axis.prototype.setCategories = function (categories, redraw) {\n this.update({ categories: categories }, redraw);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Axis.defaultOptions = AxisDefaults.defaultXAxisOptions;\n // Properties to survive after destroy, needed for Axis.update (#4317,\n // #5773, #5881).\n Axis.keepProps = [\n 'extKey',\n 'hcEvents',\n 'names',\n 'series',\n 'userMax',\n 'userMin'\n ];\n return Axis;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for the path on the Axis to be calculated.\n * @interface Highcharts.AxisPlotLinePathOptionsObject\n */ /**\n * Axis value.\n * @name Highcharts.AxisPlotLinePathOptionsObject#value\n * @type {number|undefined}\n */ /**\n * Line width used for calculation crisp line coordinates. Defaults to 1.\n * @name Highcharts.AxisPlotLinePathOptionsObject#lineWidth\n * @type {number|undefined}\n */ /**\n * If `false`, the function will return null when it falls outside the axis\n * bounds. If `true`, the function will return a path aligned to the plot area\n * sides if it falls outside. If `pass`, it will return a path outside.\n * @name Highcharts.AxisPlotLinePathOptionsObject#force\n * @type {string|boolean|undefined}\n */ /**\n * Used in Highcharts Stock. When `true`, plot paths\n * (crosshair, plotLines, gridLines)\n * will be rendered on all axes when defined on the first axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#acrossPanes\n * @type {boolean|undefined}\n */ /**\n * Use old coordinates (for resizing and rescaling).\n * If not set, defaults to `false`.\n * @name Highcharts.AxisPlotLinePathOptionsObject#old\n * @type {boolean|undefined}\n */ /**\n * If given, return the plot line path of a pixel position on the axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#translatedValue\n * @type {number|undefined}\n */ /**\n * Used in Polar axes. Reverse the positions for concatenation of polygonal\n * plot bands\n * @name Highcharts.AxisPlotLinePathOptionsObject#reverse\n * @type {boolean|undefined}\n */\n /**\n * Options for crosshairs on axes.\n *\n * @product highstock\n *\n * @typedef {Highcharts.XAxisCrosshairOptions|Highcharts.YAxisCrosshairOptions} Highcharts.AxisCrosshairOptions\n */\n /**\n * @typedef {\"navigator\"|\"pan\"|\"rangeSelectorButton\"|\"rangeSelectorInput\"|\"scrollbar\"|\"traverseUpButton\"|\"zoom\"} Highcharts.AxisExtremesTriggerValue\n */\n /**\n * @callback Highcharts.AxisEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n */\n /**\n * @callback Highcharts.AxisLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} ctx\n *\n * @return {string}\n */\n /**\n * @interface Highcharts.AxisLabelsFormatterContextObject\n */ /**\n * The axis item of the label\n * @name Highcharts.AxisLabelsFormatterContextObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The chart instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#chart\n * @type {Highcharts.Chart}\n */ /**\n * Default formatting of date/time labels.\n * @name Highcharts.AxisLabelsFormatterContextObject#dateTimeLabelFormat\n * @type {string|undefined}\n */ /**\n * Whether the label belongs to the first tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isFirst\n * @type {boolean}\n */ /**\n * Whether the label belongs to the last tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isLast\n * @type {boolean}\n */ /**\n * The position on the axis in terms of axis values. For category axes, a\n * zero-based index. For datetime axes, the JavaScript time in milliseconds\n * since 1970.\n * @name Highcharts.AxisLabelsFormatterContextObject#pos\n * @type {number}\n */ /**\n * The preformatted text as the result of the default formatting. For example\n * dates will be formatted as strings, and numbers with language-specific comma\n * separators, thousands separators and numeric symbols like `k` or `M`.\n * @name Highcharts.AxisLabelsFormatterContextObject#text\n * @type {string|undefined}\n */ /**\n * The Tick instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#tick\n * @type {Highcharts.Tick}\n */ /**\n * This can be either a numeric value or a category string.\n * @name Highcharts.AxisLabelsFormatterContextObject#value\n * @type {number|string}\n */\n /**\n * Options for axes.\n *\n * @typedef {Highcharts.XAxisOptions|Highcharts.YAxisOptions|Highcharts.ZAxisOptions} Highcharts.AxisOptions\n */\n /**\n * @callback Highcharts.AxisPointBreakEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisPointBreakEventObject} evt\n */\n /**\n * @interface Highcharts.AxisPointBreakEventObject\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#brk\n * @type {Highcharts.Dictionary}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#point\n * @type {Highcharts.Point}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#type\n * @type {\"pointBreak\"|\"pointInBreak\"}\n */\n /**\n * @callback Highcharts.AxisSetExtremesEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisSetExtremesEventObject} evt\n */\n /**\n * @interface Highcharts.AxisSetExtremesEventObject\n * @extends Highcharts.ExtremesObject\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#trigger\n * @type {Highcharts.AxisExtremesTriggerValue|string}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#type\n * @type {\"setExtremes\"}\n */\n /**\n * @callback Highcharts.AxisTickPositionerCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @return {Highcharts.AxisTickPositionsArray}\n */\n /**\n * @interface Highcharts.AxisTickPositionsArray\n * @augments Array\n */\n /**\n * @typedef {\"high\"|\"low\"|\"middle\"} Highcharts.AxisTitleAlignValue\n */\n /**\n * @typedef {Highcharts.XAxisTitleOptions|Highcharts.YAxisTitleOptions|Highcharts.ZAxisTitleOptions} Highcharts.AxisTitleOptions\n */\n /**\n * @typedef {\"linear\"|\"logarithmic\"|\"datetime\"|\"category\"|\"treegrid\"} Highcharts.AxisTypeValue\n */\n /**\n * The returned object literal from the {@link Highcharts.Axis#getExtremes}\n * function.\n *\n * @interface Highcharts.ExtremesObject\n */ /**\n * The maximum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMax\n * @type {number}\n */ /**\n * The minimum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMin\n * @type {number}\n */ /**\n * The maximum axis value, either automatic or set manually. If the `max` option\n * is not set, `maxPadding` is 0 and `endOnTick` is false, this value will be\n * the same as `dataMax`.\n * @name Highcharts.ExtremesObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually. If the `min` option\n * is not set, `minPadding` is 0 and `startOnTick` is false, this value will be\n * the same as `dataMin`.\n * @name Highcharts.ExtremesObject#min\n * @type {number}\n */ /**\n * The user defined maximum, either from the `max` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMax\n * @type {number}\n */ /**\n * The user defined minimum, either from the `min` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMin\n * @type {number}\n */\n /**\n * Formatter function for the text of a crosshair label.\n *\n * @callback Highcharts.XAxisCrosshairLabelFormatterCallbackFunction\n *\n * @param {Highcharts.Axis} this\n * Axis context\n *\n * @param {number} value\n * Y value of the data point\n *\n * @return {string}\n */\n ''; // keeps doclets above in JS file\n\n return Axis;\n });\n _registerModule(_modules, 'Core/Axis/DateTimeAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n timeUnits = U.timeUnits;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DateTimeAxis;\n (function (DateTimeAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis class with date and time support.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('dateTime');\n var axisProto = AxisClass.prototype;\n axisProto.getTimeTicks = getTimeTicks;\n addEvent(AxisClass, 'init', onInit);\n }\n return AxisClass;\n }\n DateTimeAxis.compose = compose;\n /**\n * Set the tick positions to a time unit that makes sense, for example\n * on the first of each month or on every Monday. Return an array with\n * the time positions. Used in datetime axes as well as for grouping\n * data on a datetime axis.\n *\n * @private\n * @function Highcharts.Axis#getTimeTicks\n * @param {Highcharts.TimeNormalizeObject} normalizedInterval\n * The interval in axis values (ms) and thecount.\n * @param {number} min\n * The minimum in axis values.\n * @param {number} max\n * The maximum in axis values.\n */\n function getTimeTicks() {\n return this.chart.time.getTimeTicks.apply(this.chart.time, arguments);\n }\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n if (options.type !== 'datetime') {\n axis.dateTime = void 0;\n return;\n }\n if (!axis.dateTime) {\n axis.dateTime = new Additions(axis);\n }\n }\n /* *\n *\n * Classes\n *\n * */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get a normalized tick interval for dates. Returns a configuration\n * object with unit range (interval), count and name. Used to prepare\n * data for `getTimeTicks`. Previously this logic was part of\n * getTimeTicks, but as `getTimeTicks` now runs of segments in stock\n * charts, the normalizing logic was extracted in order to prevent it\n * for running over again for each segment having the same interval.\n * #662, #697.\n * @private\n */\n Additions.prototype.normalizeTimeTickInterval = function (tickInterval, unitsOption) {\n var units = (unitsOption || [[\n // unit name\n 'millisecond',\n // allowed multiples\n [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]\n ],\n [\n 'second',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'minute',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'hour',\n [1, 2, 3, 4, 6, 8, 12]\n ],\n [\n 'day',\n [1, 2]\n ],\n [\n 'week',\n [1, 2]\n ],\n [\n 'month',\n [1, 2, 3, 4, 6]\n ],\n [\n 'year',\n null\n ]]);\n var unit = units[units.length - 1], // default unit is years\n interval = timeUnits[unit[0]],\n multiples = unit[1],\n i;\n // loop through the units to find the one that best fits the\n // tickInterval\n for (i = 0; i < units.length; i++) {\n unit = units[i];\n interval = timeUnits[unit[0]];\n multiples = unit[1];\n if (units[i + 1]) {\n // lessThan is in the middle between the highest multiple\n // and the next unit.\n var lessThan = (interval *\n multiples[multiples.length - 1] +\n timeUnits[units[i + 1][0]]) / 2;\n // break and keep the current unit\n if (tickInterval <= lessThan) {\n break;\n }\n }\n }\n // prevent 2.5 years intervals, though 25, 250 etc. are allowed\n if (interval === timeUnits.year && tickInterval < 5 * interval) {\n multiples = [1, 2, 5];\n }\n // get the count\n var count = normalizeTickInterval(tickInterval / interval,\n multiples,\n unit[0] === 'year' ? // #1913, #2360\n Math.max(getMagnitude(tickInterval / interval), 1) :\n 1);\n return {\n unitRange: interval,\n count: count,\n unitName: unit[0]\n };\n };\n /**\n * Get the best date format for a specific X value based on the closest\n * point range on the axis.\n *\n * @private\n */\n Additions.prototype.getXDateFormat = function (x, dateTimeLabelFormats) {\n var axis = this.axis,\n time = axis.chart.time;\n return axis.closestPointRange ?\n time.getDateFormat(axis.closestPointRange, x, axis.options.startOfWeek, dateTimeLabelFormats) ||\n // #2546, 2581\n time.resolveDTLFormat(dateTimeLabelFormats.year).main :\n time.resolveDTLFormat(dateTimeLabelFormats.day).main;\n };\n return Additions;\n }());\n DateTimeAxis.Additions = Additions;\n })(DateTimeAxis || (DateTimeAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return DateTimeAxis;\n });\n _registerModule(_modules, 'Core/Axis/LogarithmicAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * @private\n */\n var LogarithmicAxis;\n (function (LogarithmicAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Provides logarithmic support for axes.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('logarithmic');\n addEvent(AxisClass, 'init', onInit);\n addEvent(AxisClass, 'afterInit', onAfterInit);\n }\n return AxisClass;\n }\n LogarithmicAxis.compose = compose;\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n var logarithmic = axis.logarithmic;\n if (options.type !== 'logarithmic') {\n axis.logarithmic = void 0;\n }\n else {\n if (!logarithmic) {\n logarithmic = axis.logarithmic = new Additions(axis);\n }\n }\n }\n /**\n * @private\n */\n function onAfterInit() {\n var axis = this;\n var log = axis.logarithmic;\n // extend logarithmic axis\n if (log) {\n axis.lin2val = function (num) {\n return log.lin2log(num);\n };\n axis.val2lin = function (num) {\n return log.log2lin(num);\n };\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Provides logarithmic support for axes.\n * @private\n * @class\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the tick positions of a logarithmic axis.\n */\n Additions.prototype.getLogTickPositions = function (interval, min, max, minor) {\n var log = this;\n var axis = log.axis;\n var axisLength = axis.len;\n var options = axis.options;\n // Since we use this method for both major and minor ticks,\n // use a local variable and return the result\n var positions = [];\n // Reset\n if (!minor) {\n log.minorAutoInterval = void 0;\n }\n // First case: All ticks fall on whole logarithms: 1, 10, 100 etc.\n if (interval >= 0.5) {\n interval = Math.round(interval);\n positions = axis.getLinearTickPositions(interval, min, max);\n // Second case: We need intermediary ticks. For example\n // 1, 2, 4, 6, 8, 10, 20, 40 etc.\n }\n else if (interval >= 0.08) {\n var roundedMin = Math.floor(min);\n var intermediate = void 0,\n i = void 0,\n j = void 0,\n len = void 0,\n pos = void 0,\n lastPos = void 0,\n break2 = void 0;\n if (interval > 0.3) {\n intermediate = [1, 2, 4];\n // 0.2 equals five minor ticks per 1, 10, 100 etc\n }\n else if (interval > 0.15) {\n intermediate = [1, 2, 4, 6, 8];\n }\n else { // 0.1 equals ten minor ticks per 1, 10, 100 etc\n intermediate = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n }\n for (i = roundedMin; i < max + 1 && !break2; i++) {\n len = intermediate.length;\n for (j = 0; j < len && !break2; j++) {\n pos = log.log2lin(log.lin2log(i) * intermediate[j]);\n // #1670, lastPos is #3113\n if (pos > min &&\n (!minor || lastPos <= max) &&\n typeof lastPos !== 'undefined') {\n positions.push(lastPos);\n }\n if (lastPos > max) {\n break2 = true;\n }\n lastPos = pos;\n }\n }\n // Third case: We are so deep in between whole logarithmic values,\n // that we might as well handle the tick positions like a linear\n // axis. For example 1.01, 1.02, 1.03, 1.04.\n }\n else {\n var realMin = log.lin2log(min),\n realMax = log.lin2log(max),\n tickIntervalOption = minor ?\n axis.getMinorTickInterval() :\n options.tickInterval,\n filteredTickIntervalOption = tickIntervalOption === 'auto' ?\n null :\n tickIntervalOption,\n tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1),\n totalPixelLength = minor ?\n axisLength / axis.tickPositions.length :\n axisLength;\n interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *\n tickPixelIntervalOption / (totalPixelLength || 1));\n interval = normalizeTickInterval(interval);\n positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);\n if (!minor) {\n log.minorAutoInterval = interval / 5;\n }\n }\n // Set the axis-level tickInterval variable\n if (!minor) {\n axis.tickInterval = interval;\n }\n return positions;\n };\n Additions.prototype.lin2log = function (num) {\n return Math.pow(10, num);\n };\n Additions.prototype.log2lin = function (num) {\n return Math.log(num) / Math.LN10;\n };\n return Additions;\n }());\n LogarithmicAxis.Additions = Additions;\n })(LogarithmicAxis || (LogarithmicAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LogarithmicAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var erase = U.erase,\n extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Composition\n *\n * */\n var PlotLineOrBandAxis;\n (function (PlotLineOrBandAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Variables\n *\n * */\n var PlotLineOrBandClass;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(PlotLineOrBandType, AxisClass) {\n if (!PlotLineOrBandClass) {\n PlotLineOrBandClass = PlotLineOrBandType;\n }\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n extend(AxisClass.prototype, Additions.prototype);\n }\n return AxisClass;\n }\n PlotLineOrBandAxis.compose = compose;\n /* *\n *\n * Classes\n *\n * */\n /**\n * Object with members for extending the Axis prototype.\n * @private\n */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Internal function to create the SVG path definition for a plot band.\n *\n * @function Highcharts.Axis#getPlotBandPath\n *\n * @param {number} from\n * The axis value to start from.\n *\n * @param {number} to\n * The axis value to end on.\n *\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Additions.prototype.getPlotBandPath = function (from, to, options) {\n if (options === void 0) { options = this.options; }\n var toPath = this.getPlotLinePath({\n value: to,\n force: true,\n acrossPanes: options.acrossPanes\n }), result = [], horiz = this.horiz, outside = !isNumber(this.min) ||\n !isNumber(this.max) ||\n (from < this.min && to < this.min) ||\n (from > this.max && to > this.max);\n var path = this.getPlotLinePath({\n value: from,\n force: true,\n acrossPanes: options.acrossPanes\n }),\n i, \n // #4964 check if chart is inverted or plotband is on yAxis\n plus = 1,\n isFlat;\n if (path && toPath) {\n // Flat paths don't need labels (#3836)\n if (outside) {\n isFlat = path.toString() === toPath.toString();\n plus = 0;\n }\n // Go over each subpath - for panes in Highcharts Stock\n for (i = 0; i < path.length; i += 2) {\n var pathStart = path[i],\n pathEnd = path[i + 1],\n toPathStart = toPath[i],\n toPathEnd = toPath[i + 1];\n // Type checking all affected path segments. Consider\n // something smarter.\n if ((pathStart[0] === 'M' || pathStart[0] === 'L') &&\n (pathEnd[0] === 'M' || pathEnd[0] === 'L') &&\n (toPathStart[0] === 'M' || toPathStart[0] === 'L') &&\n (toPathEnd[0] === 'M' || toPathEnd[0] === 'L')) {\n // Add 1 pixel when coordinates are the same\n if (horiz && toPathStart[1] === pathStart[1]) {\n toPathStart[1] += plus;\n toPathEnd[1] += plus;\n }\n else if (!horiz && toPathStart[2] === pathStart[2]) {\n toPathStart[2] += plus;\n toPathEnd[2] += plus;\n }\n result.push(['M', pathStart[1], pathStart[2]], ['L', pathEnd[1], pathEnd[2]], ['L', toPathEnd[1], toPathEnd[2]], ['L', toPathStart[1], toPathStart[2]], ['Z']);\n }\n result.isFlat = isFlat;\n }\n }\n else { // outside the axis area\n path = null;\n }\n return result;\n };\n /**\n * Add a plot band after render time.\n *\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#addPlotBand\n *\n * @param {Highcharts.AxisPlotBandsOptions} options\n * A configuration object for the plot band, as defined in\n * [xAxis.plotBands](https://api.highcharts.com/highcharts/xAxis.plotBands).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot band.\n */\n Additions.prototype.addPlotBand = function (options) {\n return this.addPlotBandOrLine(options, 'plotBands');\n };\n /**\n * Add a plot line after render time.\n *\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#addPlotLine\n *\n * @param {Highcharts.AxisPlotLinesOptions} options\n * A configuration object for the plot line, as defined in\n * [xAxis.plotLines](https://api.highcharts.com/highcharts/xAxis.plotLines).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot line.\n */\n Additions.prototype.addPlotLine = function (options) {\n return this.addPlotBandOrLine(options, 'plotLines');\n };\n /**\n * Add a plot band or plot line after render time. Called from\n * addPlotBand and addPlotLine internally.\n *\n * @private\n * @function Highcharts.Axis#addPlotBandOrLine\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n */\n Additions.prototype.addPlotBandOrLine = function (options, coll) {\n var _this = this;\n var userOptions = this.userOptions;\n var obj = new PlotLineOrBandClass(this,\n options);\n if (this.visible) {\n obj = obj.render();\n }\n if (obj) { // #2189\n if (!this._addedPlotLB) {\n this._addedPlotLB = true;\n (userOptions.plotLines || [])\n .concat(userOptions.plotBands || [])\n .forEach(function (plotLineOptions) {\n _this.addPlotBandOrLine(plotLineOptions);\n });\n }\n // Add it to the user options for exporting and Axis.update\n if (coll) {\n // Workaround Microsoft/TypeScript issue #32693\n var updatedOptions = (userOptions[coll] || []);\n updatedOptions.push(options);\n userOptions[coll] = updatedOptions;\n }\n this.plotLinesAndBands.push(obj);\n }\n return obj;\n };\n /**\n * Remove a plot band or plot line from the chart by id. Called\n * internally from `removePlotBand` and `removePlotLine`.\n * @private\n * @function Highcharts.Axis#removePlotBandOrLine\n */\n Additions.prototype.removePlotBandOrLine = function (id) {\n var plotLinesAndBands = this.plotLinesAndBands,\n options = this.options,\n userOptions = this.userOptions;\n if (plotLinesAndBands) { // #15639\n var i_1 = plotLinesAndBands.length;\n while (i_1--) {\n if (plotLinesAndBands[i_1].id === id) {\n plotLinesAndBands[i_1].destroy();\n }\n }\n ([\n options.plotLines || [],\n userOptions.plotLines || [],\n options.plotBands || [],\n userOptions.plotBands || []\n ]).forEach(function (arr) {\n i_1 = arr.length;\n while (i_1--) {\n if ((arr[i_1] || {}).id === id) {\n erase(arr, arr[i_1]);\n }\n }\n });\n }\n };\n /**\n * Remove a plot band by its id.\n *\n * @sample highcharts/members/axis-removeplotband/\n * Remove plot band by id\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#removePlotBand\n *\n * @param {string} id\n * The plot band's `id` as given in the original configuration\n * object or in the `addPlotBand` option.\n */\n Additions.prototype.removePlotBand = function (id) {\n this.removePlotBandOrLine(id);\n };\n /**\n * Remove a plot line by its id.\n *\n * @sample highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#removePlotLine\n *\n * @param {string} id\n * The plot line's `id` as given in the original configuration\n * object or in the `addPlotLine` option.\n */\n Additions.prototype.removePlotLine = function (id) {\n this.removePlotBandOrLine(id);\n };\n return Additions;\n }());\n })(PlotLineOrBandAxis || (PlotLineOrBandAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return PlotLineOrBandAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBand.js', [_modules['Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js'], _modules['Core/Utilities.js']], function (PlotLineOrBandAxis, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n fireEvent = U.fireEvent,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * The object wrapper for plot lines and plot bands\n *\n * @class\n * @name Highcharts.PlotLineOrBand\n *\n * @param {Highcharts.Axis} axis\n * Related axis.\n *\n * @param {Highcharts.AxisPlotLinesOptions|Highcharts.AxisPlotBandsOptions} [options]\n * Options to use.\n */\n var PlotLineOrBand = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function PlotLineOrBand(axis, options) {\n this.axis = axis;\n if (options) {\n this.options = options;\n this.id = options.id;\n }\n }\n /* *\n *\n * Static Functions\n *\n * */\n PlotLineOrBand.compose = function (AxisClass) {\n return PlotLineOrBandAxis.compose(PlotLineOrBand, AxisClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Render the plot line or plot band. If it is already existing,\n * move it.\n * @private\n * @function Highcharts.PlotLineOrBand#render\n */\n PlotLineOrBand.prototype.render = function () {\n fireEvent(this, 'render');\n var plotLine = this,\n axis = plotLine.axis,\n horiz = axis.horiz,\n log = axis.logarithmic,\n options = plotLine.options,\n color = options.color,\n zIndex = pick(options.zIndex, 0),\n events = options.events,\n groupAttribs = {},\n renderer = axis.chart.renderer;\n var optionsLabel = options.label,\n label = plotLine.label,\n to = options.to,\n from = options.from,\n value = options.value,\n svgElem = plotLine.svgElem,\n path = [],\n group;\n var isBand = defined(from) && defined(to),\n isLine = defined(value),\n isNew = !svgElem,\n attribs = {\n 'class': 'highcharts-plot-' + (isBand ? 'band ' : 'line ') +\n (options.className || '')\n };\n var groupName = isBand ? 'bands' : 'lines';\n // logarithmic conversion\n if (log) {\n from = log.log2lin(from);\n to = log.log2lin(to);\n value = log.log2lin(value);\n }\n // Set the presentational attributes\n if (!axis.chart.styledMode) {\n if (isLine) {\n attribs.stroke = color || \"#999999\" /* Palette.neutralColor40 */;\n attribs['stroke-width'] = pick(options.width, 1);\n if (options.dashStyle) {\n attribs.dashstyle =\n options.dashStyle;\n }\n }\n else if (isBand) { // plot band\n attribs.fill = color || \"#e6ebf5\" /* Palette.highlightColor10 */;\n if (options.borderWidth) {\n attribs.stroke = options.borderColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n }\n }\n // Grouping and zIndex\n groupAttribs.zIndex = zIndex;\n groupName += '-' + zIndex;\n group = axis.plotLinesAndBandsGroups[groupName];\n if (!group) {\n axis.plotLinesAndBandsGroups[groupName] = group =\n renderer.g('plot-' + groupName)\n .attr(groupAttribs).add();\n }\n // Create the path\n if (isNew) {\n /**\n * SVG element of the plot line or band.\n *\n * @name Highcharts.PlotLineOrBand#svgElem\n * @type {Highcharts.SVGElement}\n */\n plotLine.svgElem = svgElem = renderer\n .path()\n .attr(attribs)\n .add(group);\n }\n // Set the path or return\n if (isLine) {\n path = axis.getPlotLinePath({\n value: value,\n lineWidth: svgElem.strokeWidth(),\n acrossPanes: options.acrossPanes\n });\n }\n else if (isBand) { // plot band\n path = axis.getPlotBandPath(from, to, options);\n }\n else {\n return;\n }\n // common for lines and bands\n // Add events only if they were not added before.\n if (!plotLine.eventsAdded && events) {\n objectEach(events, function (event, eventType) {\n svgElem.on(eventType, function (e) {\n events[eventType].apply(plotLine, [e]);\n });\n });\n plotLine.eventsAdded = true;\n }\n if ((isNew || !svgElem.d) && path && path.length) {\n svgElem.attr({ d: path });\n }\n else if (svgElem) {\n if (path) {\n svgElem.show();\n svgElem.animate({ d: path });\n }\n else if (svgElem.d) {\n svgElem.hide();\n if (label) {\n plotLine.label = label = label.destroy();\n }\n }\n }\n // the plot band/line label\n if (optionsLabel &&\n (defined(optionsLabel.text) || defined(optionsLabel.formatter)) &&\n path &&\n path.length &&\n axis.width > 0 &&\n axis.height > 0 &&\n !path.isFlat) {\n // apply defaults\n optionsLabel = merge({\n align: horiz && isBand && 'center',\n x: horiz ? !isBand && 4 : 10,\n verticalAlign: !horiz && isBand && 'middle',\n y: horiz ? isBand ? 16 : 10 : isBand ? 6 : -4,\n rotation: horiz && !isBand && 90\n }, optionsLabel);\n this.renderLabel(optionsLabel, path, isBand, zIndex);\n }\n else if (label) { // move out of sight\n label.hide();\n }\n // chainable\n return plotLine;\n };\n /**\n * Render and align label for plot line or band.\n * @private\n * @function Highcharts.PlotLineOrBand#renderLabel\n */\n PlotLineOrBand.prototype.renderLabel = function (optionsLabel, path, isBand, zIndex) {\n var plotLine = this,\n axis = plotLine.axis,\n renderer = axis.chart.renderer;\n var label = plotLine.label;\n // add the SVG element\n if (!label) {\n /**\n * SVG element of the label.\n *\n * @name Highcharts.PlotLineOrBand#label\n * @type {Highcharts.SVGElement}\n */\n plotLine.label = label = renderer\n .text(this.getLabelText(optionsLabel), 0, 0, optionsLabel.useHTML)\n .attr({\n align: optionsLabel.textAlign || optionsLabel.align,\n rotation: optionsLabel.rotation,\n 'class': 'highcharts-plot-' + (isBand ? 'band' : 'line') +\n '-label ' + (optionsLabel.className || ''),\n zIndex: zIndex\n })\n .add();\n if (!axis.chart.styledMode) {\n label.css(merge({\n textOverflow: 'ellipsis'\n }, optionsLabel.style));\n }\n }\n // get the bounding box and align the label\n // #3000 changed to better handle choice between plotband or plotline\n var xBounds = path.xBounds ||\n [path[0][1],\n path[1][1], (isBand ? path[2][1] : path[0][1])];\n var yBounds = path.yBounds ||\n [path[0][2],\n path[1][2], (isBand ? path[2][2] : path[0][2])];\n var x = arrayMin(xBounds);\n var y = arrayMin(yBounds);\n label.align(optionsLabel, false, {\n x: x,\n y: y,\n width: arrayMax(xBounds) - x,\n height: arrayMax(yBounds) - y\n });\n if (!label.alignValue || label.alignValue === 'left') {\n var width = optionsLabel.clip ?\n axis.width : axis.chart.chartWidth;\n label.css({\n width: (label.rotation === 90 ?\n axis.height - (label.alignAttr.y - axis.top) :\n width - (label.alignAttr.x - axis.left)) + 'px'\n });\n }\n label.show(true);\n };\n /**\n * Get label's text content.\n * @private\n * @function Highcharts.PlotLineOrBand#getLabelText\n */\n PlotLineOrBand.prototype.getLabelText = function (optionsLabel) {\n return defined(optionsLabel.formatter) ?\n optionsLabel.formatter\n .call(this) :\n optionsLabel.text;\n };\n /**\n * Remove the plot line or band.\n *\n * @function Highcharts.PlotLineOrBand#destroy\n */\n PlotLineOrBand.prototype.destroy = function () {\n // remove it from the lookup\n erase(this.axis.plotLinesAndBands, this);\n delete this.axis;\n destroyObjectProperties(this);\n };\n return PlotLineOrBand;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Options for plot bands on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsOptions|Highcharts.YAxisPlotBandsOptions|Highcharts.ZAxisPlotBandsOptions} Highcharts.AxisPlotBandsOptions\n */\n /**\n * Options for plot band labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsLabelOptions|Highcharts.YAxisPlotBandsLabelOptions|Highcharts.ZAxisPlotBandsLabelOptions} Highcharts.AxisPlotBandsLabelOptions\n */\n /**\n * Options for plot lines on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesOptions|Highcharts.YAxisPlotLinesOptions|Highcharts.ZAxisPlotLinesOptions} Highcharts.AxisPlotLinesOptions\n */\n /**\n * Options for plot line labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesLabelOptions|Highcharts.YAxisPlotLinesLabelOptions|Highcharts.ZAxisPlotLinesLabelOptions} Highcharts.AxisPlotLinesLabelOptions\n */\n ('');\n /* *\n *\n * API Options\n *\n * */\n /**\n * An array of colored bands stretching across the plot area marking an\n * interval on the axis.\n *\n * In styled mode, the plot bands are styled by the `.highcharts-plot-band`\n * class in addition to the `className` option.\n *\n * @productdesc {highcharts}\n * In a gauge, a plot band on the Y axis (value axis) will stretch along the\n * perimeter of the gauge.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands\n */\n /**\n * Flag to decide if plotBand should be rendered across all panes.\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotBands.acrossPanes\n */\n /**\n * Border color for the plot band. Also requires `borderWidth` to be set.\n *\n * @type {Highcharts.ColorString}\n * @apioption xAxis.plotBands.borderColor\n */\n /**\n * Border width for the plot band. Also requires `borderColor` to be set.\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.plotBands.borderWidth\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-band`,\n * to apply to each individual band.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotBands.className\n */\n /**\n * The color of the plot band.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Color band\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #e6ebf5\n * @apioption xAxis.plotBands.color\n */\n /**\n * An object defining mouse events for the plot band. Supported properties\n * are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotBands.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mouseover\n */\n /**\n * The start position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.from\n */\n /**\n * An id used for identifying the plot band in Axis.removePlotBand.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n * @sample {highstock} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n *\n * @type {string}\n * @apioption xAxis.plotBands.id\n */\n /**\n * The end position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.to\n */\n /**\n * The z index of the plot band within the chart, relative to other\n * elements. Using the same z index as another element may give\n * unpredictable results, as the last rendered element will be on top.\n * Values from 0 to 20 make sense.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex-above-series/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotBands.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @since 2.1\n * @apioption xAxis.plotBands.label.align\n */\n /**\n * Rotation of the text label in degrees .\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @apioption xAxis.plotBands.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-band-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotBands.label.style\n */\n /**\n * The string text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotBands.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotBands.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotBands.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot band. Can be one of\n * \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-verticalalign/\n * Vertically centered label\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @since 2.1\n * @apioption xAxis.plotBands.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-y/\n * Label on x axis\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.y\n */\n /**\n * An array of lines stretching across the plot area, marking a specific\n * value on one of the axes.\n *\n * In styled mode, the plot lines are styled by the\n * `.highcharts-plot-line` class in addition to the `className` option.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Basic plot line\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge plot line\n * @apioption xAxis.plotLines\n */\n /**\n * Flag to decide if plotLine should be rendered across all panes.\n *\n * @sample {highstock} stock/xaxis/plotlines-acrosspanes/\n * Plot lines on different panes\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotLines.acrossPanes\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-line`,\n * to apply to each individual line.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotLines.className\n */\n /**\n * The color of the line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * A red line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.ColorString}\n * @default #999999\n * @apioption xAxis.plotLines.color\n */\n /**\n * The dashing or dot style for the plot line. For possible values see\n * [this overview](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-dashstyle/\n * Dash and dot pattern\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 1.2\n * @apioption xAxis.plotLines.dashStyle\n */\n /**\n * An object defining mouse events for the plot line. Supported\n * properties are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotLines.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mouseover\n */\n /**\n * An id used for identifying the plot line in Axis.removePlotLine.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n *\n * @type {string}\n * @apioption xAxis.plotLines.id\n */\n /**\n * The position of the line in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Between two categories on X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotLines.value\n */\n /**\n * The width or thickness of the plot line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * 2px wide line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @default 2\n * @apioption xAxis.plotLines.width\n */\n /**\n * The z index of the plot line within the chart.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-behind/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above-all/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotLines.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @apioption xAxis.plotLines.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.AlignValue}\n * @default left\n * @since 2.1\n * @apioption xAxis.plotLines.label.align\n */\n /**\n * Whether to hide labels that are outside the plot area.\n *\n * @type {boolean}\n * @default false\n * @since 10.3.3\n * @apioption xAxis.plotLines.labels.clip\n */\n /**\n * Callback JavaScript function to format the label. Useful properties like\n * the value of plot line or the range of plot band (`from` & `to`\n * properties) can be found in `this.options` object.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-plotbands-label-formatter\n * Label formatters for plot line and plot band.\n * @type {Highcharts.FormatterCallbackFunction}\n * @apioption xAxis.plotLines.label.formatter\n */\n /**\n * Rotation of the text label in degrees. Defaults to 0 for horizontal plot\n * lines and 90 for vertical lines.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Slanted text\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-line-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotLines.label.style\n */\n /**\n * The text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotLines.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-textalign/\n * Text label in bottom position\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotLines.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotLines.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot line. Can be\n * one of \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Vertically centered label\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default {highcharts} top\n * @default {highstock} top\n * @since 2.1\n * @apioption xAxis.plotLines.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-y/\n * Label below the plot line\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.y\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotBands\n * @apioption yAxis.plotBands\n */\n /**\n * In a gauge chart, this option determines the inner radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n * By default, the inner radius is controlled by the [thickness](\n * #yAxis.plotBands.thickness) option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.innerRadius\n */\n /**\n * In a gauge chart, this option determines the outer radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 100%\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.outerRadius\n */\n /**\n * In a gauge chart, this option sets the width of the plot band\n * stretching along the perimeter. It can be given as a percentage\n * string, like `\"10%\"`, or as a pixel number, like `10`. The default\n * value 10 is the same as the default [tickLength](#yAxis.tickLength),\n * thus making the plot band act as a background for the tick markers.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 10\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.thickness\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotLines\n * @apioption yAxis.plotLines\n */\n (''); // keeps doclets above in JS file\n\n return PlotLineOrBand;\n });\n _registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (F, H, R, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = F.format;\n var doc = H.doc;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Tooltip of a chart.\n *\n * @class\n * @name Highcharts.Tooltip\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n var Tooltip = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tooltip(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allowShared = true;\n this.container = void 0;\n this.crosshairs = [];\n this.distance = 0;\n this.isHidden = true;\n this.isSticky = false;\n this.now = {};\n this.options = {};\n this.outside = false;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * In styled mode, apply the default filter for the tooltip drop-shadow. It\n * needs to have an id specific to the chart, otherwise there will be issues\n * when one tooltip adopts the filter of a different chart, specifically one\n * where the container is hidden.\n *\n * @private\n * @function Highcharts.Tooltip#applyFilter\n */\n Tooltip.prototype.applyFilter = function () {\n var chart = this.chart;\n chart.renderer.definition({\n tagName: 'filter',\n attributes: {\n id: 'drop-shadow-' + chart.index,\n opacity: 0.5\n },\n children: [{\n tagName: 'feGaussianBlur',\n attributes: {\n 'in': 'SourceAlpha',\n stdDeviation: 1\n }\n }, {\n tagName: 'feOffset',\n attributes: {\n dx: 1,\n dy: 1\n }\n }, {\n tagName: 'feComponentTransfer',\n children: [{\n tagName: 'feFuncA',\n attributes: {\n type: 'linear',\n slope: 0.3\n }\n }]\n }, {\n tagName: 'feMerge',\n children: [{\n tagName: 'feMergeNode'\n }, {\n tagName: 'feMergeNode',\n attributes: {\n 'in': 'SourceGraphic'\n }\n }]\n }]\n });\n };\n /**\n * Build the body (lines) of the tooltip by iterating over the items and\n * returning one entry for each item, abstracting this functionality allows\n * to easily overwrite and extend it.\n *\n * @private\n * @function Highcharts.Tooltip#bodyFormatter\n */\n Tooltip.prototype.bodyFormatter = function (items) {\n return items.map(function (item) {\n var tooltipOptions = item.series.tooltipOptions;\n return (tooltipOptions[(item.point.formatPrefix || 'point') + 'Formatter'] ||\n item.point.tooltipFormatter).call(item.point, tooltipOptions[(item.point.formatPrefix || 'point') + 'Format'] || '');\n });\n };\n /**\n * Destroy the single tooltips in a split tooltip.\n * If the tooltip is active then it is not destroyed, unless forced to.\n *\n * @private\n * @function Highcharts.Tooltip#cleanSplit\n *\n * @param {boolean} [force]\n * Force destroy all tooltips.\n */\n Tooltip.prototype.cleanSplit = function (force) {\n this.chart.series.forEach(function (series) {\n var tt = series && series.tt;\n if (tt) {\n if (!tt.isActive || force) {\n series.tt = tt.destroy();\n }\n else {\n tt.isActive = false;\n }\n }\n });\n };\n /**\n * In case no user defined formatter is given, this will be used. Note that\n * the context here is an object holding point, series, x, y etc.\n *\n * @function Highcharts.Tooltip#defaultFormatter\n *\n * @param {Highcharts.Tooltip} tooltip\n *\n * @return {string|Array}\n * Returns a string (single tooltip and shared)\n * or an array of strings (split tooltip)\n */\n Tooltip.prototype.defaultFormatter = function (tooltip) {\n var items = this.points || splat(this);\n var s;\n // Build the header\n s = [tooltip.tooltipFooterHeaderFormatter(items[0])];\n // build the values\n s = s.concat(tooltip.bodyFormatter(items));\n // footer\n s.push(tooltip.tooltipFooterHeaderFormatter(items[0], true));\n return s;\n };\n /**\n * Removes and destroys the tooltip and its elements.\n *\n * @function Highcharts.Tooltip#destroy\n */\n Tooltip.prototype.destroy = function () {\n // Destroy and clear local variables\n if (this.label) {\n this.label = this.label.destroy();\n }\n if (this.split && this.tt) {\n this.cleanSplit(true);\n this.tt = this.tt.destroy();\n }\n if (this.renderer) {\n this.renderer = this.renderer.destroy();\n discardElement(this.container);\n }\n U.clearTimeout(this.hideTimer);\n U.clearTimeout(this.tooltipTimeout);\n };\n /**\n * Extendable method to get the anchor position of the tooltip\n * from a point or set of points\n *\n * @private\n * @function Highcharts.Tooltip#getAnchor\n */\n Tooltip.prototype.getAnchor = function (points, mouseEvent) {\n var chart = this.chart,\n pointer = chart.pointer,\n inverted = chart.inverted,\n plotTop = chart.plotTop,\n plotLeft = chart.plotLeft;\n var ret;\n points = splat(points);\n // If reversedStacks are false the tooltip position should be taken from\n // the last point (#17948)\n if (points[0].series &&\n points[0].series.yAxis &&\n !points[0].series.yAxis.options.reversedStacks) {\n points = points.slice().reverse();\n }\n // When tooltip follows mouse, relate the position to the mouse\n if (this.followPointer && mouseEvent) {\n if (typeof mouseEvent.chartX === 'undefined') {\n mouseEvent = pointer.normalize(mouseEvent);\n }\n ret = [\n mouseEvent.chartX - plotLeft,\n mouseEvent.chartY - plotTop\n ];\n // Some series types use a specificly calculated tooltip position for\n // each point\n }\n else if (points[0].tooltipPos) {\n ret = points[0].tooltipPos;\n // Calculate the average position and adjust for axis positions\n }\n else {\n var chartX_1 = 0,\n chartY_1 = 0;\n points.forEach(function (point) {\n var pos = point.pos(true);\n if (pos) {\n chartX_1 += pos[0];\n chartY_1 += pos[1];\n }\n });\n chartX_1 /= points.length;\n chartY_1 /= points.length;\n // When shared, place the tooltip next to the mouse (#424)\n if (this.shared && points.length > 1 && mouseEvent) {\n if (inverted) {\n chartX_1 = mouseEvent.chartX;\n }\n else {\n chartY_1 = mouseEvent.chartY;\n }\n }\n // Use the average position for multiple points\n ret = [chartX_1 - plotLeft, chartY_1 - plotTop];\n }\n return ret.map(Math.round);\n };\n /**\n * Get the CSS class names for the tooltip's label. Styles the label\n * by `colorIndex` or user-defined CSS.\n *\n * @function Highcharts.Tooltip#getClassName\n *\n * @return {string}\n * The class names.\n */\n Tooltip.prototype.getClassName = function (point, isSplit, isHeader) {\n var options = this.options,\n series = point.series,\n seriesOptions = series.options;\n return [\n options.className,\n 'highcharts-label',\n isHeader && 'highcharts-tooltip-header',\n isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',\n !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),\n (seriesOptions && seriesOptions.className)\n ].filter(isString).join(' ');\n };\n /**\n * Creates the Tooltip label element if it does not exist, then returns it.\n *\n * @function Highcharts.Tooltip#getLabel\n *\n * @return {Highcharts.SVGElement}\n * Tooltip label\n */\n Tooltip.prototype.getLabel = function () {\n var tooltip = this,\n styledMode = this.chart.styledMode,\n options = this.options,\n doSplit = this.split && this.allowShared,\n pointerEvents = (options.style.pointerEvents ||\n (this.shouldStickOnContact() ? 'auto' : 'none'));\n var container,\n renderer = this.chart.renderer;\n // If changing from a split tooltip to a non-split tooltip, we must\n // destroy it in order to get the SVG right. #13868.\n if (tooltip.label) {\n var wasSplit = !tooltip.label.hasClass('highcharts-label');\n if ((doSplit && !wasSplit) || (!doSplit && wasSplit)) {\n tooltip.destroy();\n }\n }\n if (!this.label) {\n if (this.outside) {\n var chartStyle = this.chart.options.chart.style,\n Renderer = RendererRegistry.getRendererType();\n /**\n * Reference to the tooltip's container, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#container\n * @type {Highcharts.HTMLDOMElement|undefined}\n */\n this.container = container = H.doc.createElement('div');\n container.className = 'highcharts-tooltip-container';\n css(container, {\n position: 'absolute',\n top: '1px',\n pointerEvents: pointerEvents,\n zIndex: Math.max(this.options.style.zIndex || 0, (chartStyle && chartStyle.zIndex || 0) + 3)\n });\n H.doc.body.appendChild(container);\n /**\n * Reference to the tooltip's renderer, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#renderer\n * @type {Highcharts.SVGRenderer|undefined}\n */\n this.renderer = renderer = new Renderer(container, 0, 0, chartStyle, void 0, void 0, renderer.styledMode);\n }\n // Create the label\n if (doSplit) {\n this.label = renderer.g('tooltip');\n }\n else {\n this.label = renderer\n .label('', 0, 0, options.shape, void 0, void 0, options.useHTML, void 0, 'tooltip')\n .attr({\n padding: options.padding,\n r: options.borderRadius\n });\n if (!styledMode) {\n this.label\n .attr({\n fill: options.backgroundColor,\n 'stroke-width': options.borderWidth\n })\n // #2301, #2657\n .css(options.style)\n .css({ pointerEvents: pointerEvents })\n .shadow(options.shadow);\n }\n }\n if (styledMode && options.shadow) {\n // Apply the drop-shadow filter\n this.applyFilter();\n this.label.attr({\n filter: 'url(#drop-shadow-' + this.chart.index + ')'\n });\n }\n // Split tooltip use updateTooltipContainer to position the tooltip\n // container.\n if (tooltip.outside && !tooltip.split) {\n var label_1 = this.label;\n var xSetter_1 = label_1.xSetter,\n ySetter_1 = label_1.ySetter;\n label_1.xSetter = function (value) {\n xSetter_1.call(label_1, tooltip.distance);\n container.style.left = value + 'px';\n };\n label_1.ySetter = function (value) {\n ySetter_1.call(label_1, tooltip.distance);\n container.style.top = value + 'px';\n };\n }\n this.label\n .attr({ zIndex: 8 })\n .add();\n }\n return this.label;\n };\n /**\n * Place the tooltip in a chart without spilling over and not covering the\n * point itself.\n *\n * @function Highcharts.Tooltip#getPosition\n *\n * @param {number} boxWidth\n * Width of the tooltip box.\n *\n * @param {number} boxHeight\n * Height of the tooltip box.\n *\n * @param {Highcharts.Point} point\n * Tooltip related point.\n *\n * @return {Highcharts.PositionObject}\n * Recommended position of the tooltip.\n */\n Tooltip.prototype.getPosition = function (boxWidth, boxHeight, point) {\n var chart = this.chart,\n distance = this.distance,\n ret = {}, \n // Don't use h if chart isn't inverted (#7242) ???\n h = (chart.inverted && point.h) || 0, // #4117 ???\n outside = this.outside,\n outerWidth = outside ?\n // substract distance to prevent scrollbars\n doc.documentElement.clientWidth - 2 * distance :\n chart.chartWidth,\n outerHeight = outside ?\n Math.max(doc.body.scrollHeight,\n doc.documentElement.scrollHeight,\n doc.body.offsetHeight,\n doc.documentElement.offsetHeight,\n doc.documentElement.clientHeight) :\n chart.chartHeight,\n chartPosition = chart.pointer.getChartPosition(),\n scaleX = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleX); },\n scaleY = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleY); }, \n // Build parameter arrays for firstDimension()/secondDimension()\n buildDimensionArray = function (dim) {\n var isX = dim === 'x';\n return [\n dim,\n isX ? outerWidth : outerHeight,\n isX ? boxWidth : boxHeight\n ].concat(outside ? [\n // If we are using tooltip.outside, we need to scale the\n // position to match scaling of the container in case there\n // is a transform/zoom on the container. #11329\n isX ? scaleX(boxWidth) : scaleY(boxHeight),\n isX ? chartPosition.left - distance +\n scaleX(point.plotX + chart.plotLeft) :\n chartPosition.top - distance +\n scaleY(point.plotY + chart.plotTop),\n 0,\n isX ? outerWidth : outerHeight\n ] : [\n // Not outside, no scaling is needed\n isX ? boxWidth : boxHeight,\n isX ? point.plotX + chart.plotLeft :\n point.plotY + chart.plotTop,\n isX ? chart.plotLeft : chart.plotTop,\n isX ? chart.plotLeft + chart.plotWidth :\n chart.plotTop + chart.plotHeight\n ]);\n };\n var first = buildDimensionArray('y'), second = buildDimensionArray('x'), swapped;\n // Handle negative points or reversed axis (#13780)\n var flipped = !!point.negative;\n if (!chart.polar &&\n chart.hoverSeries &&\n chart.hoverSeries.yAxis &&\n chart.hoverSeries.yAxis.reversed) {\n flipped = !flipped;\n }\n // The far side is right or bottom\n var preferFarSide = !this.followPointer &&\n pick(point.ttBelow, !chart.inverted === flipped), // #4984\n /*\n * Handle the preferred dimension. When the preferred dimension is\n * tooltip on top or bottom of the point,\n it will look for space\n * there.\n *\n * @private\n */\n firstDimension = function (dim,\n outerSize,\n innerSize,\n scaledInnerSize, // #11329\n point,\n min,\n max) {\n var scaledDist = outside ?\n (dim === 'y' ? scaleY(distance) : scaleX(distance)) :\n distance,\n scaleDiff = (innerSize - scaledInnerSize) / 2,\n roomLeft = scaledInnerSize < point - distance,\n roomRight = point + distance + scaledInnerSize < outerSize,\n alignedLeft = point - scaledDist - innerSize + scaleDiff,\n alignedRight = point + scaledDist - scaleDiff;\n if (preferFarSide && roomRight) {\n ret[dim] = alignedRight;\n }\n else if (!preferFarSide && roomLeft) {\n ret[dim] = alignedLeft;\n }\n else if (roomLeft) {\n ret[dim] = Math.min(max - scaledInnerSize, alignedLeft - h < 0 ? alignedLeft : alignedLeft - h);\n }\n else if (roomRight) {\n ret[dim] = Math.max(min, alignedRight + h + innerSize > outerSize ?\n alignedRight :\n alignedRight + h);\n }\n else {\n return false;\n }\n }, \n /*\n * Handle the secondary dimension. If the preferred dimension is\n * tooltip on top or bottom of the point, the second dimension is to\n * align the tooltip above the point, trying to align center but\n * allowing left or right align within the chart box.\n *\n * @private\n */\n secondDimension = function (dim, outerSize, innerSize, scaledInnerSize, // #11329\n point) {\n var retVal;\n // Too close to the edge, return false and swap dimensions\n if (point < distance || point > outerSize - distance) {\n retVal = false;\n // Align left/top\n }\n else if (point < innerSize / 2) {\n ret[dim] = 1;\n // Align right/bottom\n }\n else if (point > outerSize - scaledInnerSize / 2) {\n ret[dim] = outerSize - scaledInnerSize - 2;\n // Align center\n }\n else {\n ret[dim] = point - innerSize / 2;\n }\n return retVal;\n }, \n /*\n * Swap the dimensions\n */\n swap = function (count) {\n var temp = first;\n first = second;\n second = temp;\n swapped = count;\n }, run = function () {\n if (firstDimension.apply(0, first) !== false) {\n if (secondDimension.apply(0, second) === false &&\n !swapped) {\n swap(true);\n run();\n }\n }\n else if (!swapped) {\n swap(true);\n run();\n }\n else {\n ret.x = ret.y = 0;\n }\n };\n // Under these conditions, prefer the tooltip on the side of the point\n if (chart.inverted || this.len > 1) {\n swap();\n }\n run();\n return ret;\n };\n /**\n * Hides the tooltip with a fade out animation.\n *\n * @function Highcharts.Tooltip#hide\n *\n * @param {number} [delay]\n * The fade out in milliseconds. If no value is provided the value\n * of the tooltip.hideDelay option is used. A value of 0 disables\n * the fade out animation.\n */\n Tooltip.prototype.hide = function (delay) {\n var tooltip = this;\n // disallow duplicate timers (#1728, #1766)\n U.clearTimeout(this.hideTimer);\n delay = pick(delay, this.options.hideDelay);\n if (!this.isHidden) {\n this.hideTimer = syncTimeout(function () {\n // If there is a delay, do fadeOut with the default duration. If\n // the hideDelay is 0, we assume no animation is wanted, so we\n // pass 0 duration. #12994.\n tooltip.getLabel().fadeOut(delay ? void 0 : delay);\n tooltip.isHidden = true;\n }, delay);\n }\n };\n /**\n * @private\n * @function Highcharts.Tooltip#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n Tooltip.prototype.init = function (chart, options) {\n /**\n * Chart of the tooltip.\n *\n * @readonly\n * @name Highcharts.Tooltip#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n /**\n * Used tooltip options.\n *\n * @readonly\n * @name Highcharts.Tooltip#options\n * @type {Highcharts.TooltipOptions}\n */\n this.options = options;\n /**\n * List of crosshairs.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#crosshairs\n * @type {Array}\n */\n this.crosshairs = [];\n /**\n * Current values of x and y when animating.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#now\n * @type {Highcharts.PositionObject}\n */\n this.now = { x: 0, y: 0 };\n /**\n * Tooltips are initially hidden.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#isHidden\n * @type {boolean}\n */\n this.isHidden = true;\n /**\n * True, if the tooltip is split into one label per series, with the\n * header close to the axis.\n *\n * @readonly\n * @name Highcharts.Tooltip#split\n * @type {boolean|undefined}\n */\n this.split = options.split && !chart.inverted && !chart.polar;\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events.\n *\n * @readonly\n * @name Highcharts.Tooltip#shared\n * @type {boolean|undefined}\n */\n this.shared = options.shared || this.split;\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (false), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area.\n *\n * @readonly\n * @name Highcharts.Tooltip#outside\n * @type {boolean}\n *\n * @todo\n * Split tooltip does not support outside in the first iteration. Should\n * not be too complicated to implement.\n */\n this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));\n };\n Tooltip.prototype.shouldStickOnContact = function (pointerEvent) {\n return !!(!this.followPointer &&\n this.options.stickOnContact &&\n (!pointerEvent || this.chart.pointer.inClass(pointerEvent.target, 'highcharts-tooltip')));\n };\n /**\n * Moves the tooltip with a soft animation to a new position.\n *\n * @private\n * @function Highcharts.Tooltip#move\n *\n * @param {number} x\n *\n * @param {number} y\n *\n * @param {number} anchorX\n *\n * @param {number} anchorY\n */\n Tooltip.prototype.move = function (x, y, anchorX, anchorY) {\n var tooltip = this,\n now = tooltip.now,\n animate = tooltip.options.animation !== false &&\n !tooltip.isHidden &&\n // When we get close to the target position, abort animation and\n // land on the right place (#3056)\n (Math.abs(x - now.x) > 1 || Math.abs(y - now.y) > 1),\n skipAnchor = tooltip.followPointer || tooltip.len > 1;\n // Get intermediate values for animation\n extend(now, {\n x: animate ? (2 * now.x + x) / 3 : x,\n y: animate ? (now.y + y) / 2 : y,\n anchorX: skipAnchor ?\n void 0 :\n animate ? (2 * now.anchorX + anchorX) / 3 : anchorX,\n anchorY: skipAnchor ?\n void 0 :\n animate ? (now.anchorY + anchorY) / 2 : anchorY\n });\n // Move to the intermediate value\n tooltip.getLabel().attr(now);\n tooltip.drawTracker();\n // Run on next tick of the mouse tracker\n if (animate) {\n // Never allow two timeouts\n U.clearTimeout(this.tooltipTimeout);\n // Set the fixed interval ticking for the smooth tooltip\n this.tooltipTimeout = setTimeout(function () {\n // The interval function may still be running during destroy,\n // so check that the chart is really there before calling.\n if (tooltip) {\n tooltip.move(x, y, anchorX, anchorY);\n }\n }, 32);\n }\n };\n /**\n * Refresh the tooltip's text and position.\n *\n * @function Highcharts.Tooltip#refresh\n *\n * @param {Highcharts.Point|Array} pointOrPoints\n * Either a point or an array of points.\n *\n * @param {Highcharts.PointerEventObject} [mouseEvent]\n * Mouse event, that is responsible for the refresh and should be\n * used for the tooltip update.\n */\n Tooltip.prototype.refresh = function (pointOrPoints, mouseEvent) {\n var tooltip = this,\n chart = this.chart,\n options = tooltip.options,\n pointer = chart.pointer,\n points = splat(pointOrPoints),\n point = points[0],\n pointConfig = [],\n formatter = options.formatter || tooltip.defaultFormatter,\n shared = tooltip.shared,\n styledMode = chart.styledMode;\n var textConfig = {};\n if (!options.enabled || !point.series) { // #16820\n return;\n }\n U.clearTimeout(this.hideTimer);\n // A switch saying if this specific tooltip configuration allows shared\n // or split modes\n tooltip.allowShared = !(!isArray(pointOrPoints) &&\n pointOrPoints.series &&\n pointOrPoints.series.noSharedTooltip);\n // get the reference point coordinates (pie charts use tooltipPos)\n tooltip.followPointer = (!tooltip.split && point.series.tooltipOptions.followPointer);\n var anchor = tooltip.getAnchor(pointOrPoints,\n mouseEvent),\n x = anchor[0],\n y = anchor[1];\n // shared tooltip, array is sent over\n if (shared && tooltip.allowShared) {\n pointer.applyInactiveState(points);\n // Now set hover state for the choosen ones:\n points.forEach(function (item) {\n item.setState('hover');\n pointConfig.push(item.getLabelConfig());\n });\n textConfig = {\n x: point.category,\n y: point.y\n };\n textConfig.points = pointConfig;\n // single point tooltip\n }\n else {\n textConfig = point.getLabelConfig();\n }\n this.len = pointConfig.length; // #6128\n var text = formatter.call(textConfig,\n tooltip);\n // register the current series\n var currentSeries = point.series;\n this.distance = pick(currentSeries.tooltipOptions.distance, 16);\n // update the inner HTML\n if (text === false) {\n this.hide();\n }\n else {\n // update text\n if (tooltip.split && tooltip.allowShared) { // #13868\n this.renderSplit(text, points);\n }\n else {\n var checkX_1 = x;\n var checkY_1 = y;\n if (mouseEvent && pointer.isDirectTouch) {\n checkX_1 = mouseEvent.chartX - chart.plotLeft;\n checkY_1 = mouseEvent.chartY - chart.plotTop;\n }\n // #11493, #13095\n if (chart.polar ||\n currentSeries.options.clip === false ||\n points.some(function (p) {\n return pointer.isDirectTouch || // ##17929\n p.series.shouldShowTooltip(checkX_1, checkY_1);\n })) {\n var label = tooltip.getLabel();\n // Prevent the tooltip from flowing over the chart box\n // (#6659)\n if (!options.style.width || styledMode) {\n label.css({\n width: chart.spacingBox.width + 'px'\n });\n }\n label.attr({\n text: text && text.join ?\n text.join('') :\n text\n });\n // Set the stroke color of the box to reflect the point\n label.addClass(tooltip.getClassName(point), true);\n if (!styledMode) {\n label.attr({\n stroke: (options.borderColor ||\n point.color ||\n currentSeries.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n tooltip.updatePosition({\n plotX: x,\n plotY: y,\n negative: point.negative,\n ttBelow: point.ttBelow,\n h: anchor[2] || 0\n });\n }\n else {\n tooltip.hide();\n return;\n }\n }\n // show it\n if (tooltip.isHidden && tooltip.label) {\n tooltip.label.attr({\n opacity: 1\n }).show();\n }\n tooltip.isHidden = false;\n }\n fireEvent(this, 'refresh');\n };\n /**\n * Render the split tooltip. Loops over each point's text and adds\n * a label next to the point, then uses the distribute function to\n * find best non-overlapping positions.\n *\n * @private\n * @function Highcharts.Tooltip#renderSplit\n *\n * @param {string|Array<(boolean|string)>} labels\n *\n * @param {Array} points\n */\n Tooltip.prototype.renderSplit = function (labels, points) {\n var tooltip = this;\n var chart = tooltip.chart,\n _a = tooltip.chart,\n chartWidth = _a.chartWidth,\n chartHeight = _a.chartHeight,\n plotHeight = _a.plotHeight,\n plotLeft = _a.plotLeft,\n plotTop = _a.plotTop,\n pointer = _a.pointer,\n _b = _a.scrollablePixelsY,\n scrollablePixelsY = _b === void 0 ? 0 : _b,\n scrollablePixelsX = _a.scrollablePixelsX,\n _c = _a.scrollingContainer,\n _d = _c === void 0 ? { scrollLeft: 0,\n scrollTop: 0 } : _c,\n scrollLeft = _d.scrollLeft,\n scrollTop = _d.scrollTop,\n styledMode = _a.styledMode,\n distance = tooltip.distance,\n options = tooltip.options,\n positioner = tooltip.options.positioner;\n // The area which the tooltip should be limited to. Limit to scrollable\n // plot area if enabled, otherwise limit to the chart container. If\n // outside is true it should be the whole viewport\n var bounds = (tooltip.outside &&\n typeof scrollablePixelsX !== 'number') ?\n doc.documentElement.getBoundingClientRect() : {\n left: scrollLeft,\n right: scrollLeft + chartWidth,\n top: scrollTop,\n bottom: scrollTop + chartHeight\n };\n var tooltipLabel = tooltip.getLabel();\n var ren = this.renderer || chart.renderer;\n var headerTop = Boolean(chart.xAxis[0] && chart.xAxis[0].opposite);\n var _e = pointer.getChartPosition(),\n chartLeft = _e.left,\n chartTop = _e.top;\n var distributionBoxTop = plotTop + scrollTop;\n var headerHeight = 0;\n var adjustedPlotHeight = plotHeight - scrollablePixelsY;\n /**\n * Calculates the anchor position for the partial tooltip\n *\n * @private\n * @param {Highcharts.Point} point The point related to the tooltip\n * @return {Object} Returns an object with anchorX and anchorY\n */\n function getAnchor(point) {\n var isHeader = point.isHeader,\n _a = point.plotX,\n plotX = _a === void 0 ? 0 : _a,\n _b = point.plotY,\n plotY = _b === void 0 ? 0 : _b,\n series = point.series;\n var anchorX;\n var anchorY;\n if (isHeader) {\n // Set anchorX to plotX\n anchorX = plotLeft + plotX;\n // Set anchorY to center of visible plot area.\n anchorY = plotTop + plotHeight / 2;\n }\n else {\n var xAxis = series.xAxis,\n yAxis = series.yAxis;\n // Set anchorX to plotX. Limit to within xAxis.\n anchorX = xAxis.pos + clamp(plotX, -distance, xAxis.len + distance);\n // Set anchorY, limit to the scrollable plot area\n if (series.shouldShowTooltip(0, yAxis.pos - plotTop + plotY, {\n ignoreX: true\n })) {\n anchorY = yAxis.pos + plotY;\n }\n }\n // Limit values to plot area\n anchorX = clamp(anchorX, bounds.left - distance, bounds.right + distance);\n return { anchorX: anchorX, anchorY: anchorY };\n }\n /**\n * Calculates the position of the partial tooltip\n *\n * @private\n * @param {number} anchorX\n * The partial tooltip anchor x position\n *\n * @param {number} anchorY\n * The partial tooltip anchor y position\n *\n * @param {boolean|undefined} isHeader\n * Whether the partial tooltip is a header\n *\n * @param {number} boxWidth\n * Width of the partial tooltip\n *\n * @return {Highcharts.PositionObject}\n * Returns the partial tooltip x and y position\n */\n function defaultPositioner(anchorX, anchorY, isHeader, boxWidth, alignedLeft) {\n if (alignedLeft === void 0) { alignedLeft = true; }\n var y;\n var x;\n if (isHeader) {\n y = headerTop ? 0 : adjustedPlotHeight;\n x = clamp(anchorX - (boxWidth / 2), bounds.left, bounds.right - boxWidth - (tooltip.outside ? chartLeft : 0));\n }\n else {\n y = anchorY - distributionBoxTop;\n x = alignedLeft ?\n anchorX - boxWidth - distance :\n anchorX + distance;\n x = clamp(x, alignedLeft ? x : bounds.left, bounds.right);\n }\n // NOTE: y is relative to distributionBoxTop\n return { x: x, y: y };\n }\n /**\n * Updates the attributes and styling of the partial tooltip. Creates a\n * new partial tooltip if it does not exists.\n *\n * @private\n * @param {Highcharts.SVGElement|undefined} partialTooltip\n * The partial tooltip to update\n * @param {Highcharts.Point} point\n * The point related to the partial tooltip\n * @param {boolean|string} str The text for the partial tooltip\n * @return {Highcharts.SVGElement} Returns the updated partial tooltip\n */\n function updatePartialTooltip(partialTooltip, point, str) {\n var tt = partialTooltip;\n var isHeader = point.isHeader,\n series = point.series;\n if (!tt) {\n var attribs = {\n padding: options.padding,\n r: options.borderRadius\n };\n if (!styledMode) {\n attribs.fill = options.backgroundColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n tt = ren\n .label('', 0, 0, (options[isHeader ? 'headerShape' : 'shape']), void 0, void 0, options.useHTML)\n .addClass(tooltip.getClassName(point, true, isHeader))\n .attr(attribs)\n .add(tooltipLabel);\n }\n tt.isActive = true;\n tt.attr({\n text: str\n });\n if (!styledMode) {\n tt.css(options.style)\n .shadow(options.shadow)\n .attr({\n stroke: (options.borderColor ||\n point.color ||\n series.color ||\n \"#333333\" /* Palette.neutralColor80 */)\n });\n }\n return tt;\n }\n // Graceful degradation for legacy formatters\n if (isString(labels)) {\n labels = [false, labels];\n }\n // Create the individual labels for header and points, ignore footer\n var boxes = labels.slice(0,\n points.length + 1).reduce(function (boxes,\n str,\n i) {\n if (str !== false && str !== '') {\n var point = (points[i - 1] ||\n {\n // Item 0 is the header. Instead of this, we could also\n // use the crosshair label\n isHeader: true,\n plotX: points[0].plotX,\n plotY: plotHeight,\n series: {}\n });\n var isHeader = point.isHeader;\n // Store the tooltip label referance on the series\n var owner = isHeader ? tooltip : point.series;\n var tt = owner.tt = updatePartialTooltip(owner.tt,\n point,\n str.toString());\n // Get X position now, so we can move all to the other side in\n // case of overflow\n var bBox = tt.getBBox();\n var boxWidth = bBox.width + tt.strokeWidth();\n if (isHeader) {\n headerHeight = bBox.height;\n adjustedPlotHeight += headerHeight;\n if (headerTop) {\n distributionBoxTop -= headerHeight;\n }\n }\n var _a = getAnchor(point),\n anchorX = _a.anchorX,\n anchorY = _a.anchorY;\n if (typeof anchorY === 'number') {\n var size = bBox.height + 1;\n var boxPosition = (positioner ?\n positioner.call(tooltip,\n boxWidth,\n size,\n point) :\n defaultPositioner(anchorX,\n anchorY,\n isHeader,\n boxWidth));\n boxes.push({\n // 0-align to the top, 1-align to the bottom\n align: positioner ? 0 : void 0,\n anchorX: anchorX,\n anchorY: anchorY,\n boxWidth: boxWidth,\n point: point,\n rank: pick(boxPosition.rank, isHeader ? 1 : 0),\n size: size,\n target: boxPosition.y,\n tt: tt,\n x: boxPosition.x\n });\n }\n else {\n // Hide tooltips which anchorY is outside the visible plot\n // area\n tt.isActive = false;\n }\n }\n return boxes;\n }, []);\n // Realign the tooltips towards the right if there is not enough space\n // to the left and there is space to to the right\n if (!positioner && boxes.some(function (box) {\n // Always realign if the beginning of a label is outside bounds\n var outside = tooltip.outside;\n var boxStart = (outside ? chartLeft : 0) + box.anchorX;\n if (boxStart < bounds.left &&\n boxStart + box.boxWidth < bounds.right) {\n return true;\n }\n // Otherwise, check if there is more space available to the right\n return boxStart < (chartLeft - bounds.left) + box.boxWidth &&\n bounds.right - boxStart > boxStart;\n })) {\n boxes = boxes.map(function (box) {\n var _a = defaultPositioner(box.anchorX,\n box.anchorY,\n box.point.isHeader,\n box.boxWidth,\n false),\n x = _a.x,\n y = _a.y;\n return extend(box, {\n target: y,\n x: x\n });\n });\n }\n // Clean previous run (for missing points)\n tooltip.cleanSplit();\n // Distribute and put in place\n distribute(boxes, adjustedPlotHeight);\n var boxExtremes = {\n left: chartLeft,\n right: chartLeft\n };\n // Get the extremes from series tooltips\n boxes.forEach(function (box) {\n var x = box.x,\n boxWidth = box.boxWidth,\n isHeader = box.isHeader;\n if (!isHeader) {\n if (tooltip.outside && chartLeft + x < boxExtremes.left) {\n boxExtremes.left = chartLeft + x;\n }\n if (!isHeader &&\n tooltip.outside &&\n boxExtremes.left + boxWidth > boxExtremes.right) {\n boxExtremes.right = chartLeft + x;\n }\n }\n });\n boxes.forEach(function (box) {\n var x = box.x,\n anchorX = box.anchorX,\n anchorY = box.anchorY,\n pos = box.pos,\n isHeader = box.point.isHeader;\n var attributes = {\n visibility: typeof pos === 'undefined' ? 'hidden' : 'inherit',\n x: x,\n /* NOTE: y should equal pos to be consistent with !split\n * tooltip,\n but is currently relative to plotTop. Is left as is\n * to avoid breaking change. Remove distributionBoxTop to make\n * it consistent.\n */\n y: (pos || 0) + distributionBoxTop,\n anchorX: anchorX,\n anchorY: anchorY\n };\n // Handle left-aligned tooltips overflowing the chart area\n if (tooltip.outside && x < anchorX) {\n var offset = chartLeft - boxExtremes.left;\n // Skip this if there is no overflow\n if (offset > 0) {\n if (!isHeader) {\n attributes.x = x + offset;\n attributes.anchorX = anchorX + offset;\n }\n if (isHeader) {\n attributes.x = (boxExtremes.right - boxExtremes.left) / 2;\n attributes.anchorX = anchorX + offset;\n }\n }\n }\n // Put the label in place\n box.tt.attr(attributes);\n });\n /* If we have a seperate tooltip container, then update the necessary\n * container properties.\n * Test that tooltip has its own container and renderer before executing\n * the operation.\n */\n var container = tooltip.container,\n outside = tooltip.outside,\n renderer = tooltip.renderer;\n if (outside && container && renderer) {\n // Set container size to fit the bounds\n var _f = tooltipLabel.getBBox(),\n width = _f.width,\n height = _f.height,\n x = _f.x,\n y = _f.y;\n renderer.setSize(width + x, height + y, false);\n // Position the tooltip container to the chart container\n container.style.left = boxExtremes.left + 'px';\n container.style.top = chartTop + 'px';\n }\n };\n /**\n * If the `stickOnContact` option is active, this will add a tracker shape.\n *\n * @private\n * @function Highcharts.Tooltip#drawTracker\n */\n Tooltip.prototype.drawTracker = function () {\n var tooltip = this;\n if (!this.shouldStickOnContact()) {\n if (tooltip.tracker) {\n tooltip.tracker.destroy();\n }\n return;\n }\n var chart = tooltip.chart;\n var label = tooltip.label;\n var points = tooltip.shared ? chart.hoverPoints : chart.hoverPoint;\n if (!label || !points) {\n return;\n }\n var box = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n // Combine anchor and tooltip\n var anchorPos = this.getAnchor(points);\n var labelBBox = label.getBBox();\n anchorPos[0] += chart.plotLeft - label.translateX;\n anchorPos[1] += chart.plotTop - label.translateY;\n // When the mouse pointer is between the anchor point and the label,\n // the label should stick.\n box.x = Math.min(0, anchorPos[0]);\n box.y = Math.min(0, anchorPos[1]);\n box.width = (anchorPos[0] < 0 ?\n Math.max(Math.abs(anchorPos[0]), (labelBBox.width - anchorPos[0])) :\n Math.max(Math.abs(anchorPos[0]), labelBBox.width));\n box.height = (anchorPos[1] < 0 ?\n Math.max(Math.abs(anchorPos[1]), (labelBBox.height - Math.abs(anchorPos[1]))) :\n Math.max(Math.abs(anchorPos[1]), labelBBox.height));\n if (tooltip.tracker) {\n tooltip.tracker.attr(box);\n }\n else {\n tooltip.tracker = label.renderer\n .rect(box)\n .addClass('highcharts-tracker')\n .add(label);\n if (!chart.styledMode) {\n tooltip.tracker.attr({\n fill: 'rgba(0,0,0,0)'\n });\n }\n }\n };\n /**\n * @private\n */\n Tooltip.prototype.styledModeFormat = function (formatString) {\n return formatString\n .replace('style=\"font-size: 10px\"', 'class=\"highcharts-header\"')\n .replace(/style=\"color:{(point|series)\\.color}\"/g, 'class=\"highcharts-color-{$1.colorIndex} ' +\n '{series.options.className} ' +\n '{point.options.className}\"');\n };\n /**\n * Format the footer/header of the tooltip\n * #3397: abstraction to enable formatting of footer and header\n *\n * @private\n * @function Highcharts.Tooltip#tooltipFooterHeaderFormatter\n */\n Tooltip.prototype.tooltipFooterHeaderFormatter = function (labelConfig, isFooter) {\n var series = labelConfig.series,\n tooltipOptions = series.tooltipOptions,\n xAxis = series.xAxis,\n dateTime = xAxis && xAxis.dateTime,\n e = {\n isFooter: isFooter,\n labelConfig: labelConfig\n };\n var xDateFormat = tooltipOptions.xDateFormat,\n formatString = tooltipOptions[isFooter ? 'footerFormat' : 'headerFormat'];\n fireEvent(this, 'headerFormatter', e, function (e) {\n // Guess the best date format based on the closest point distance\n // (#568, #3418)\n if (dateTime && !xDateFormat && isNumber(labelConfig.key)) {\n xDateFormat = dateTime.getXDateFormat(labelConfig.key, tooltipOptions.dateTimeLabelFormats);\n }\n // Insert the footer date format if any\n if (dateTime && xDateFormat) {\n ((labelConfig.point && labelConfig.point.tooltipDateKeys) ||\n ['key']).forEach(function (key) {\n formatString = formatString.replace('{point.' + key + '}', '{point.' + key + ':' + xDateFormat + '}');\n });\n }\n // Replace default header style with class name\n if (series.chart.styledMode) {\n formatString = this.styledModeFormat(formatString);\n }\n e.text = format(formatString, {\n point: labelConfig,\n series: series\n }, this.chart);\n });\n return e.text;\n };\n /**\n * Updates the tooltip with the provided tooltip options.\n *\n * @function Highcharts.Tooltip#update\n *\n * @param {Highcharts.TooltipOptions} options\n * The tooltip options to update.\n */\n Tooltip.prototype.update = function (options) {\n this.destroy();\n // Update user options (#6218)\n merge(true, this.chart.options.tooltip.userOptions, options);\n this.init(this.chart, merge(true, this.options, options));\n };\n /**\n * Find the new position and perform the move\n *\n * @private\n * @function Highcharts.Tooltip#updatePosition\n *\n * @param {Highcharts.Point} point\n */\n Tooltip.prototype.updatePosition = function (point) {\n var _a = this,\n chart = _a.chart,\n distance = _a.distance,\n options = _a.options,\n pointer = chart.pointer,\n label = this.getLabel(), \n // Needed for outside: true (#11688)\n _b = pointer.getChartPosition(),\n left = _b.left,\n top = _b.top,\n scaleX = _b.scaleX,\n scaleY = _b.scaleY,\n pos = (options.positioner || this.getPosition).call(this,\n label.width,\n label.height,\n point);\n var anchorX = (point.plotX || 0) + chart.plotLeft,\n anchorY = (point.plotY || 0) + chart.plotTop,\n pad;\n // Set the renderer size dynamically to prevent document size to change\n if (this.outside) {\n // Corrects positions, occurs with tooltip positioner (#16944)\n if (options.positioner) {\n pos.x += left - distance;\n pos.y += top - distance;\n }\n pad = options.borderWidth + 2 * distance;\n this.renderer.setSize(label.width + pad, label.height + pad, false);\n // Anchor and tooltip container need scaling if chart container has\n // scale transform/css zoom. #11329.\n if (scaleX !== 1 || scaleY !== 1) {\n css(this.container, {\n transform: \"scale(\".concat(scaleX, \", \").concat(scaleY, \")\")\n });\n anchorX *= scaleX;\n anchorY *= scaleY;\n }\n anchorX += left - pos.x;\n anchorY += top - pos.y;\n }\n // do the move\n this.move(Math.round(pos.x), Math.round(pos.y || 0), // can be undefined (#3977)\n anchorX, anchorY);\n };\n return Tooltip;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback function to format the text of the tooltip from scratch.\n *\n * In case of single or shared tooltips, a string should be be returned. In case\n * of splitted tooltips, it should return an array where the first item is the\n * header, and subsequent items are mapped to the points. Return `false` to\n * disable tooltip for a specific point on series.\n *\n * @callback Highcharts.TooltipFormatterCallbackFunction\n *\n * @param {Highcharts.TooltipFormatterContextObject} this\n * Context to format\n *\n * @param {Highcharts.Tooltip} tooltip\n * The tooltip instance\n *\n * @return {false|string|Array<(string|null|undefined)>|null|undefined}\n * Formatted text or false\n */\n /**\n * Configuration for the tooltip formatters.\n *\n * @interface Highcharts.TooltipFormatterContextObject\n * @extends Highcharts.PointLabelObject\n */ /**\n * Array of points in shared tooltips.\n * @name Highcharts.TooltipFormatterContextObject#points\n * @type {Array|undefined}\n */\n /**\n * A callback function to place the tooltip in a specific position.\n *\n * @callback Highcharts.TooltipPositionerCallbackFunction\n *\n * @param {Highcharts.Tooltip} this\n * Tooltip context of the callback.\n *\n * @param {number} labelWidth\n * Width of the tooltip.\n *\n * @param {number} labelHeight\n * Height of the tooltip.\n *\n * @param {Highcharts.TooltipPositionerPointObject} point\n * Point information for positioning a tooltip.\n *\n * @return {Highcharts.PositionObject}\n * New position for the tooltip.\n */\n /**\n * Point information for positioning a tooltip.\n *\n * @interface Highcharts.TooltipPositionerPointObject\n * @extends Highcharts.Point\n */ /**\n * If `tooltip.split` option is enabled and positioner is called for each of the\n * boxes separately, this property indicates the call on the xAxis header, which\n * is not a point itself.\n * @name Highcharts.TooltipPositionerPointObject#isHeader\n * @type {boolean}\n */ /**\n * The reference point relative to the plot area. Add chart.plotLeft to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotX\n * @type {number}\n */ /**\n * The reference point relative to the plot area. Add chart.plotTop to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotY\n * @type {number}\n */\n /**\n * @typedef {\"callout\"|\"circle\"|\"square\"} Highcharts.TooltipShapeValue\n */\n ''; // keeps doclets above in JS file\n\n return Tooltip;\n });\n _registerModule(_modules, 'Core/Series/Point.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (AST, A, D, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var format = F.format;\n var addEvent = U.addEvent,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n syncTimeout = U.syncTimeout,\n removeEvent = U.removeEvent,\n uniqueKey = U.uniqueKey;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * The Point object. The point objects are generated from the `series.data`\n * configuration objects or raw numbers. They can be accessed from the\n * `Series.points` array. Other ways to instantiate points are through {@link\n * Highcharts.Series#addPoint} or {@link Highcharts.Series#setData}.\n *\n * @class\n * @name Highcharts.Point\n */\n var Point = /** @class */ (function () {\n function Point() {\n /* *\n *\n * Properties\n *\n * */\n /**\n * For categorized axes this property holds the category name for the\n * point. For other axes it holds the X value.\n *\n * @name Highcharts.Point#category\n * @type {number|string}\n */\n this.category = void 0;\n this.formatPrefix = 'point';\n this.id = void 0;\n this.isNull = false;\n /**\n * The name of the point. The name can be given as the first position of the\n * point configuration array, or as a `name` property in the configuration:\n *\n * @example\n * // Array config\n * data: [\n * ['John', 1],\n * ['Jane', 2]\n * ]\n *\n * // Object config\n * data: [{\n * name: 'John',\n * y: 1\n * }, {\n * name: 'Jane',\n * y: 2\n * }]\n *\n * @name Highcharts.Point#name\n * @type {string}\n */\n this.name = void 0;\n /**\n * The point's options as applied in the initial configuration, or\n * extended through `Point.update`.\n *\n * In TypeScript you have to extend `PointOptionsObject` via an\n * additional interface to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @name Highcharts.Point#options\n * @type {Highcharts.PointOptionsObject}\n */\n this.options = void 0;\n /**\n * The percentage for points in a stacked series or pies.\n *\n * @name Highcharts.Point#percentage\n * @type {number|undefined}\n */\n this.percentage = void 0;\n this.selected = false;\n /**\n * The series object associated with the point.\n *\n * @name Highcharts.Point#series\n * @type {Highcharts.Series}\n */\n this.series = void 0;\n /**\n * The attributes of the rendered SVG shape like in `column` or `pie`\n * series.\n *\n * @readonly\n * @name Highcharts.Point#shapeArgs\n * @type {Readonly|undefined}\n */\n this.shapeArgs = void 0;\n /**\n * The total of values in either a stack for stacked series, or a pie in a\n * pie series.\n *\n * @name Highcharts.Point#total\n * @type {number|undefined}\n */\n this.total = void 0;\n /**\n * For certain series types, like pie charts, where individual points can\n * be shown or hidden.\n *\n * @name Highcharts.Point#visible\n * @type {boolean}\n * @default true\n */\n this.visible = true;\n this.x = void 0;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Animate SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#animateBeforeDestroy\n */\n Point.prototype.animateBeforeDestroy = function () {\n var point = this,\n animateParams = { x: point.startXPos,\n opacity: 0 },\n graphicalProps = point.getGraphicalProps();\n graphicalProps.singular.forEach(function (prop) {\n var isDataLabel = prop === 'dataLabel';\n point[prop] = point[prop].animate(isDataLabel ? {\n x: point[prop].startXPos,\n y: point[prop].startYPos,\n opacity: 0\n } : animateParams);\n });\n graphicalProps.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item.element) {\n item.animate(extend({ x: point.startXPos }, (item.startYPos ? {\n x: item.startXPos,\n y: item.startYPos\n } : {})));\n }\n });\n });\n };\n /**\n * Apply the options containing the x and y data and possible some extra\n * properties. Called on point init or from point.update.\n *\n * @private\n * @function Highcharts.Point#applyOptions\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options as defined in series.data.\n *\n * @param {number} [x]\n * Optionally, the x value.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n */\n Point.prototype.applyOptions = function (options, x) {\n var point = this,\n series = point.series,\n pointValKey = series.options.pointValKey || series.pointValKey;\n options = Point.prototype.optionsToObject.call(this, options);\n // copy options directly to point\n extend(point, options);\n point.options = point.options ?\n extend(point.options, options) :\n options;\n // Since options are copied into the Point instance, some accidental\n // options must be shielded (#5681)\n if (options.group) {\n delete point.group;\n }\n if (options.dataLabels) {\n delete point.dataLabels;\n }\n /**\n * The y value of the point.\n * @name Highcharts.Point#y\n * @type {number|undefined}\n */\n // For higher dimension series types. For instance, for ranges, point.y\n // is mapped to point.low.\n if (pointValKey) {\n point.y = Point.prototype.getNestedProperty.call(point, pointValKey);\n }\n point.isNull = this.isValid && !this.isValid();\n point.formatPrefix = point.isNull ? 'null' : 'point'; // #9233, #10874\n // The point is initially selected by options (#5777)\n if (point.selected) {\n point.state = 'select';\n }\n /**\n * The x value of the point.\n * @name Highcharts.Point#x\n * @type {number}\n */\n // If no x is set by now, get auto incremented value. All points must\n // have an x value, however the y value can be null to create a gap in\n // the series\n if ('name' in point &&\n typeof x === 'undefined' &&\n series.xAxis &&\n series.xAxis.hasNames) {\n point.x = series.xAxis.nameToX(point);\n }\n if (typeof point.x === 'undefined' && series) {\n if (typeof x === 'undefined') {\n point.x = series.autoIncrement();\n }\n else {\n point.x = x;\n }\n }\n else if (isNumber(options.x) && series.options.relativeXValue) {\n point.x = series.autoIncrement(options.x);\n }\n return point;\n };\n /**\n * Destroy a point to clear memory. Its reference still stays in\n * `series.data`.\n *\n * @private\n * @function Highcharts.Point#destroy\n */\n Point.prototype.destroy = function () {\n var point = this,\n series = point.series,\n chart = series.chart,\n dataSorting = series.options.dataSorting,\n hoverPoints = chart.hoverPoints,\n globalAnimation = point.series.chart.renderer.globalAnimation,\n animation = animObject(globalAnimation);\n var prop;\n /**\n * Allow to call after animation.\n * @private\n */\n function destroyPoint() {\n // Remove all events and elements\n if (point.graphic ||\n point.graphics ||\n point.dataLabel ||\n point.dataLabels) {\n removeEvent(point);\n point.destroyElements();\n }\n for (prop in point) { // eslint-disable-line guard-for-in\n point[prop] = null;\n }\n }\n if (point.legendItem) {\n // pies have legend items\n chart.legend.destroyItem(point);\n }\n if (hoverPoints) {\n point.setState();\n erase(hoverPoints, point);\n if (!hoverPoints.length) {\n chart.hoverPoints = null;\n }\n }\n if (point === chart.hoverPoint) {\n point.onMouseOut();\n }\n // Remove properties after animation\n if (!dataSorting || !dataSorting.enabled) {\n destroyPoint();\n }\n else {\n this.animateBeforeDestroy();\n syncTimeout(destroyPoint, animation.duration);\n }\n chart.pointCount--;\n };\n /**\n * Destroy SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#destroyElements\n * @param {Highcharts.Dictionary} [kinds]\n */\n Point.prototype.destroyElements = function (kinds) {\n var point = this,\n props = point.getGraphicalProps(kinds);\n props.singular.forEach(function (prop) {\n point[prop] = point[prop].destroy();\n });\n props.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item && item.element) {\n item.destroy();\n }\n });\n delete point[plural];\n });\n };\n /**\n * Fire an event on the Point object.\n *\n * @private\n * @function Highcharts.Point#firePointEvent\n *\n * @param {string} eventType\n * Type of the event.\n *\n * @param {Highcharts.Dictionary|Event} [eventArgs]\n * Additional event arguments.\n *\n * @param {Highcharts.EventCallbackFunction|Function} [defaultFunction]\n * Default event handler.\n *\n * @emits Highcharts.Point#event:*\n */\n Point.prototype.firePointEvent = function (eventType, eventArgs, defaultFunction) {\n var point = this,\n series = this.series,\n seriesOptions = series.options;\n // load event handlers on demand to save time on mouseover/out\n if (seriesOptions.point.events[eventType] ||\n (point.options &&\n point.options.events &&\n point.options.events[eventType])) {\n point.importEvents();\n }\n // add default handler if in selection mode\n if (eventType === 'click' && seriesOptions.allowPointSelect) {\n defaultFunction = function (event) {\n // Control key is for Windows, meta (= Cmd key) for Mac, Shift\n // for Opera.\n if (point.select) { // #2911\n point.select(null, event.ctrlKey || event.metaKey || event.shiftKey);\n }\n };\n }\n fireEvent(point, eventType, eventArgs, defaultFunction);\n };\n /**\n * Get the CSS class names for individual points. Used internally where the\n * returned value is set on every point.\n *\n * @function Highcharts.Point#getClassName\n *\n * @return {string}\n * The class names.\n */\n Point.prototype.getClassName = function () {\n var point = this;\n return 'highcharts-point' +\n (point.selected ? ' highcharts-point-select' : '') +\n (point.negative ? ' highcharts-negative' : '') +\n (point.isNull ? ' highcharts-null-point' : '') +\n (typeof point.colorIndex !== 'undefined' ?\n ' highcharts-color-' + point.colorIndex : '') +\n (point.options.className ? ' ' + point.options.className : '') +\n (point.zone && point.zone.className ? ' ' +\n point.zone.className.replace('highcharts-negative', '') : '');\n };\n /**\n * Get props of all existing graphical point elements.\n *\n * @private\n * @function Highcharts.Point#getGraphicalProps\n */\n Point.prototype.getGraphicalProps = function (kinds) {\n var point = this,\n props = [],\n graphicalProps = { singular: [],\n plural: [] };\n var prop,\n i;\n kinds = kinds || { graphic: 1, dataLabel: 1 };\n if (kinds.graphic) {\n props.push('graphic', 'shadowGroup');\n }\n if (kinds.dataLabel) {\n props.push('dataLabel', 'dataLabelPath', 'dataLabelUpper', 'connector');\n }\n i = props.length;\n while (i--) {\n prop = props[i];\n if (point[prop]) {\n graphicalProps.singular.push(prop);\n }\n }\n [\n 'graphic',\n 'dataLabel',\n 'connector'\n ].forEach(function (prop) {\n var plural = prop + 's';\n if (kinds[prop] && point[plural]) {\n graphicalProps.plural.push(plural);\n }\n });\n return graphicalProps;\n };\n /**\n * Return the configuration hash needed for the data label and tooltip\n * formatters.\n *\n * @function Highcharts.Point#getLabelConfig\n *\n * @return {Highcharts.PointLabelObject}\n * Abstract object used in formatters and formats.\n */\n Point.prototype.getLabelConfig = function () {\n return {\n x: this.category,\n y: this.y,\n color: this.color,\n colorIndex: this.colorIndex,\n key: this.name || this.category,\n series: this.series,\n point: this,\n percentage: this.percentage,\n total: this.total || this.stackTotal\n };\n };\n /**\n * Returns the value of the point property for a given value.\n * @private\n */\n Point.prototype.getNestedProperty = function (key) {\n if (!key) {\n return;\n }\n if (key.indexOf('custom.') === 0) {\n return getNestedProperty(key, this.options);\n }\n return this[key];\n };\n /**\n * In a series with `zones`, return the zone that the point belongs to.\n *\n * @function Highcharts.Point#getZone\n *\n * @return {Highcharts.SeriesZonesOptionsObject}\n * The zone item.\n */\n Point.prototype.getZone = function () {\n var series = this.series,\n zones = series.zones,\n zoneAxis = series.zoneAxis || 'y';\n var zone,\n i = 0;\n zone = zones[i];\n while (this[zoneAxis] >= zone.value) {\n zone = zones[++i];\n }\n // For resetting or reusing the point (#8100)\n if (!this.nonZonedColor) {\n this.nonZonedColor = this.color;\n }\n if (zone && zone.color && !this.options.color) {\n this.color = zone.color;\n }\n else {\n this.color = this.nonZonedColor;\n }\n return zone;\n };\n /**\n * Utility to check if point has new shape type. Used in column series and\n * all others that are based on column series.\n * @private\n */\n Point.prototype.hasNewShapeType = function () {\n var point = this;\n var oldShapeType = point.graphic &&\n (point.graphic.symbolName || point.graphic.element.nodeName);\n return oldShapeType !== this.shapeType;\n };\n /**\n * Initialize the point. Called internally based on the `series.data`\n * option.\n *\n * @function Highcharts.Point#init\n *\n * @param {Highcharts.Series} series\n * The series object containing this point.\n *\n * @param {Highcharts.PointOptionsType} options\n * The data in either number, array or object format.\n *\n * @param {number} [x]\n * Optionally, the X value of the point.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n *\n * @emits Highcharts.Point#event:afterInit\n */\n Point.prototype.init = function (series, options, x) {\n this.series = series;\n this.applyOptions(options, x);\n // Add a unique ID to the point if none is assigned\n this.id = defined(this.id) ? this.id : uniqueKey();\n this.resolveColor();\n series.chart.pointCount++;\n fireEvent(this, 'afterInit');\n return this;\n };\n /**\n * Determine if point is valid.\n * @private\n * @function Highcharts.Point#isValid\n */\n Point.prototype.isValid = function () {\n return this.x !== null && isNumber(this.y);\n };\n /**\n * Transform number or array configs into objects. Also called for object\n * configs. Used internally to unify the different configuration formats for\n * points. For example, a simple number `10` in a line series will be\n * transformed to `{ y: 10 }`, and an array config like `[1, 10]` in a\n * scatter series will be transformed to `{ x: 1, y: 10 }`.\n *\n * @deprecated\n * @function Highcharts.Point#optionsToObject\n *\n * @param {Highcharts.PointOptionsType} options\n * Series data options.\n *\n * @return {Highcharts.Dictionary<*>}\n * Transformed point options.\n */\n Point.prototype.optionsToObject = function (options) {\n var series = this.series,\n keys = series.options.keys,\n pointArrayMap = keys || series.pointArrayMap || ['y'],\n valueCount = pointArrayMap.length;\n var ret = {},\n firstItemType,\n i = 0,\n j = 0;\n if (isNumber(options) || options === null) {\n ret[pointArrayMap[0]] = options;\n }\n else if (isArray(options)) {\n // with leading x value\n if (!keys && options.length > valueCount) {\n firstItemType = typeof options[0];\n if (firstItemType === 'string') {\n ret.name = options[0];\n }\n else if (firstItemType === 'number') {\n ret.x = options[0];\n }\n i++;\n }\n while (j < valueCount) {\n // Skip undefined positions for keys\n if (!keys || typeof options[i] !== 'undefined') {\n if (pointArrayMap[j].indexOf('.') > 0) {\n // Handle nested keys, e.g. ['color.pattern.image']\n // Avoid function call unless necessary.\n Point.prototype.setNestedProperty(ret, options[i], pointArrayMap[j]);\n }\n else {\n ret[pointArrayMap[j]] = options[i];\n }\n }\n i++;\n j++;\n }\n }\n else if (typeof options === 'object') {\n ret = options;\n // This is the fastest way to detect if there are individual point\n // dataLabels that need to be considered in drawDataLabels. These\n // can only occur in object configs.\n if (options.dataLabels) {\n series._hasPointLabels = true;\n }\n // Same approach as above for markers\n if (options.marker) {\n series._hasPointMarkers = true;\n }\n }\n return ret;\n };\n /**\n * Get the pixel position of the point relative to the plot area.\n * @private\n * @function Highcharts.Point#pos\n */\n Point.prototype.pos = function (chartCoordinates, plotY) {\n if (plotY === void 0) { plotY = this.plotY; }\n var _a = this,\n plotX = _a.plotX,\n series = _a.series,\n chart = series.chart,\n xAxis = series.xAxis,\n yAxis = series.yAxis;\n var posX = 0,\n posY = 0;\n if (isNumber(plotX) && isNumber(plotY)) {\n if (chartCoordinates) {\n posX = xAxis ? xAxis.pos : chart.plotLeft;\n posY = yAxis ? yAxis.pos : chart.plotTop;\n }\n return chart.inverted && xAxis && yAxis ?\n [yAxis.len - plotY + posY, xAxis.len - plotX + posX] :\n [plotX + posX, plotY + posY];\n }\n };\n /**\n * @private\n * @function Highcharts.Point#resolveColor\n */\n Point.prototype.resolveColor = function () {\n var series = this.series,\n optionsChart = series.chart.options.chart,\n styledMode = series.chart.styledMode;\n var color,\n colors,\n colorCount = optionsChart.colorCount,\n colorIndex;\n // remove points nonZonedColor for later recalculation\n delete this.nonZonedColor;\n if (series.options.colorByPoint) {\n if (!styledMode) {\n colors = series.options.colors || series.chart.options.colors;\n color = colors[series.colorCounter];\n colorCount = colors.length;\n }\n colorIndex = series.colorCounter;\n series.colorCounter++;\n // loop back to zero\n if (series.colorCounter === colorCount) {\n series.colorCounter = 0;\n }\n }\n else {\n if (!styledMode) {\n color = series.color;\n }\n colorIndex = series.colorIndex;\n }\n /**\n * The point's current color index, used in styled mode instead of\n * `color`. The color index is inserted in class names used for styling.\n *\n * @name Highcharts.Point#colorIndex\n * @type {number|undefined}\n */\n this.colorIndex = pick(this.options.colorIndex, colorIndex);\n /**\n * The point's current color.\n *\n * @name Highcharts.Point#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */\n this.color = pick(this.options.color, color);\n };\n /**\n * Set a value in an object, on the property defined by key. The key\n * supports nested properties using dot notation. The function modifies the\n * input object and does not make a copy.\n *\n * @function Highcharts.Point#setNestedProperty\n *\n * @param {T} object\n * The object to set the value on.\n *\n * @param {*} value\n * The value to set.\n *\n * @param {string} key\n * Key to the property to set.\n *\n * @return {T}\n * The modified object.\n */\n Point.prototype.setNestedProperty = function (object, value, key) {\n var nestedKeys = key.split('.');\n nestedKeys.reduce(function (result, key, i, arr) {\n var isLastKey = arr.length - 1 === i;\n result[key] = (isLastKey ?\n value :\n isObject(result[key], true) ?\n result[key] :\n {});\n return result[key];\n }, object);\n return object;\n };\n Point.prototype.shouldDraw = function () {\n return !this.isNull;\n };\n /**\n * Extendable method for formatting each point's tooltip line.\n *\n * @function Highcharts.Point#tooltipFormatter\n *\n * @param {string} pointFormat\n * The point format.\n *\n * @return {string}\n * A string to be concatenated in to the common tooltip text.\n */\n Point.prototype.tooltipFormatter = function (pointFormat) {\n // Insert options for valueDecimals, valuePrefix, and valueSuffix\n var series = this.series, seriesTooltipOptions = series.tooltipOptions, valueDecimals = pick(seriesTooltipOptions.valueDecimals, ''), valuePrefix = seriesTooltipOptions.valuePrefix || '', valueSuffix = seriesTooltipOptions.valueSuffix || '';\n // Replace default point style with class name\n if (series.chart.styledMode) {\n pointFormat =\n series.chart.tooltip.styledModeFormat(pointFormat);\n }\n // Loop over the point array map and replace unformatted values with\n // sprintf formatting markup\n (series.pointArrayMap || ['y']).forEach(function (key) {\n key = '{point.' + key; // without the closing bracket\n if (valuePrefix || valueSuffix) {\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), valuePrefix + key + '}' + valueSuffix);\n }\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), key + ':,.' + valueDecimals + 'f}');\n });\n return format(pointFormat, {\n point: this,\n series: this.series\n }, series.chart);\n };\n /**\n * Update point with new options (typically x/y data) and optionally redraw\n * the series.\n *\n * @sample highcharts/members/point-update-column/\n * Update column value\n * @sample highcharts/members/point-update-pie/\n * Update pie slice\n * @sample maps/members/point-update/\n * Update map area value in Highmaps\n *\n * @function Highcharts.Point#update\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. Point options are handled as described under\n * the `series.type.data` item for each series type. For example\n * for a line series, if options is a single number, the point will\n * be given that number as the marin y value. If it is an array, it\n * will be interpreted as x and y values respectively. If it is an\n * object, advanced options are applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is updated. If doing\n * more operations on the chart, it is best practice to set\n * `redraw` to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Point#event:update\n */\n Point.prototype.update = function (options, redraw, animation, runEvent) {\n var point = this,\n series = point.series,\n graphic = point.graphic,\n chart = series.chart,\n seriesOptions = series.options;\n var i;\n redraw = pick(redraw, true);\n /**\n * @private\n */\n function update() {\n point.applyOptions(options);\n // Update visuals, #4146\n // Handle mock graphic elements for a11y, #12718\n var hasMockGraphic = graphic && point.hasMockGraphic;\n var shouldDestroyGraphic = point.y === null ?\n !hasMockGraphic :\n hasMockGraphic;\n if (graphic && shouldDestroyGraphic) {\n point.graphic = graphic.destroy();\n delete point.hasMockGraphic;\n }\n if (isObject(options, true)) {\n // Destroy so we can get new elements\n if (graphic && graphic.element) {\n // \"null\" is also a valid symbol\n if (options &&\n options.marker &&\n typeof options.marker.symbol !== 'undefined') {\n point.graphic = graphic.destroy();\n }\n }\n if (options && options.dataLabels && point.dataLabel) {\n point.dataLabel = point.dataLabel.destroy(); // #2468\n }\n if (point.connector) {\n point.connector = point.connector.destroy(); // #7243\n }\n }\n // record changes in the parallel arrays\n i = point.index;\n series.updateParallelArrays(point, i);\n // Record the options to options.data. If the old or the new config\n // is an object, use point options, otherwise use raw options\n // (#4701, #4916).\n seriesOptions.data[i] = (isObject(seriesOptions.data[i], true) ||\n isObject(options, true)) ?\n point.options :\n pick(options, seriesOptions.data[i]);\n // redraw\n series.isDirty = series.isDirtyData = true;\n if (!series.fixedBox && series.hasCartesianSeries) { // #1906, #2320\n chart.isDirtyBox = true;\n }\n if (seriesOptions.legendType === 'point') { // #1831, #1885\n chart.isDirtyLegend = true;\n }\n if (redraw) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of doing the update\n if (runEvent === false) { // When called from setData\n update();\n }\n else {\n point.firePointEvent('update', { options: options }, update);\n }\n };\n /**\n * Remove a point and optionally redraw the series and if necessary the axes\n *\n * @sample highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n * @sample highcharts/members/point-remove/\n * Remove pie slice\n * @sample maps/members/point-remove/\n * Remove selected points in Highmaps\n *\n * @function Highcharts.Point#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call. When\n * doing more operations on the chart, for example running\n * `point.remove()` in a loop, it is best practice to set `redraw`\n * to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial} [animation=false]\n * Whether to apply animation, and optionally animation\n * configuration.\n */\n Point.prototype.remove = function (redraw, animation) {\n this.series.removePoint(this.series.data.indexOf(this), redraw, animation);\n };\n /**\n * Toggle the selection status of a point.\n *\n * @see Highcharts.Chart#getSelectedPoints\n *\n * @sample highcharts/members/point-select/\n * Select a point from a button\n * @sample highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample maps/series/data-id/\n * Select a point in Highmaps\n *\n * @function Highcharts.Point#select\n *\n * @param {boolean} [selected]\n * When `true`, the point is selected. When `false`, the point is\n * unselected. When `null` or `undefined`, the selection state is toggled.\n *\n * @param {boolean} [accumulate=false]\n * When `true`, the selection is added to other selected points.\n * When `false`, other selected points are deselected. Internally in\n * Highcharts, when\n * [allowPointSelect](https://api.highcharts.com/highcharts/plotOptions.series.allowPointSelect)\n * is `true`, selected points are accumulated on Control, Shift or Cmd\n * clicking the point.\n *\n * @emits Highcharts.Point#event:select\n * @emits Highcharts.Point#event:unselect\n */\n Point.prototype.select = function (selected, accumulate) {\n var point = this,\n series = point.series,\n chart = series.chart;\n selected = pick(selected, !point.selected);\n this.selectedStaging = selected;\n // fire the event with the default handler\n point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {\n /**\n * Whether the point is selected or not.\n *\n * @see Point#select\n * @see Chart#getSelectedPoints\n *\n * @name Highcharts.Point#selected\n * @type {boolean}\n */\n point.selected = point.options.selected = selected;\n series.options.data[series.data.indexOf(point)] =\n point.options;\n point.setState(selected && 'select');\n // unselect all other points unless Ctrl or Cmd + click\n if (!accumulate) {\n chart.getSelectedPoints().forEach(function (loopPoint) {\n var loopSeries = loopPoint.series;\n if (loopPoint.selected && loopPoint !== point) {\n loopPoint.selected = loopPoint.options.selected =\n false;\n loopSeries.options.data[loopSeries.data.indexOf(loopPoint)] = loopPoint.options;\n // Programatically selecting a point should restore\n // normal state, but when click happened on other\n // point, set inactive state to match other points\n loopPoint.setState(chart.hoverPoints &&\n loopSeries.options.inactiveOtherPoints ?\n 'inactive' : '');\n loopPoint.firePointEvent('unselect');\n }\n });\n }\n });\n delete this.selectedStaging;\n };\n /**\n * Runs on mouse over the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOver\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments.\n */\n Point.prototype.onMouseOver = function (e) {\n var point = this,\n series = point.series,\n chart = series.chart,\n pointer = chart.pointer;\n e = e ?\n pointer.normalize(e) :\n // In cases where onMouseOver is called directly without an event\n pointer.getChartCoordinatesFromPoint(point, chart.inverted);\n pointer.runPointActions(e, point);\n };\n /**\n * Runs on mouse out from the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOut\n * @emits Highcharts.Point#event:mouseOut\n */\n Point.prototype.onMouseOut = function () {\n var point = this,\n chart = point.series.chart;\n point.firePointEvent('mouseOut');\n if (!point.series.options.inactiveOtherPoints) {\n (chart.hoverPoints || []).forEach(function (p) {\n p.setState();\n });\n }\n chart.hoverPoints = chart.hoverPoint = null;\n };\n /**\n * Import events from the series' and point's options. Only do it on\n * demand, to save processing time on hovering.\n *\n * @private\n * @function Highcharts.Point#importEvents\n */\n Point.prototype.importEvents = function () {\n if (!this.hasImportedEvents) {\n var point_1 = this,\n options = merge(point_1.series.options.point,\n point_1.options),\n events = options.events;\n point_1.events = events;\n objectEach(events, function (event, eventType) {\n if (isFunction(event)) {\n addEvent(point_1, eventType, event);\n }\n });\n this.hasImportedEvents = true;\n }\n };\n /**\n * Set the point's state.\n *\n * @function Highcharts.Point#setState\n *\n * @param {Highcharts.PointStateValue|\"\"} [state]\n * The new state, can be one of `'hover'`, `'select'`, `'inactive'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [move]\n * State for animation.\n *\n * @emits Highcharts.Point#event:afterSetState\n */\n Point.prototype.setState = function (state, move) {\n var point = this,\n series = point.series,\n previousState = point.state,\n stateOptions = (series.options.states[state || 'normal'] ||\n {}),\n markerOptions = (defaultOptions.plotOptions[series.type].marker &&\n series.options.marker),\n normalDisabled = (markerOptions && markerOptions.enabled === false),\n markerStateOptions = ((markerOptions &&\n markerOptions.states &&\n markerOptions.states[state || 'normal']) || {}),\n stateDisabled = markerStateOptions.enabled === false,\n pointMarker = point.marker || {},\n chart = series.chart,\n hasMarkers = (markerOptions && series.markerAttribs);\n var halo = series.halo,\n markerAttribs,\n pointAttribs,\n pointAttribsAnimation,\n stateMarkerGraphic = series.stateMarkerGraphic,\n newSymbol;\n state = state || ''; // empty string\n if (\n // already has this state\n (state === point.state && !move) ||\n // selected points don't respond to hover\n (point.selected && state !== 'select') ||\n // series' state options is disabled\n (stateOptions.enabled === false) ||\n // general point marker's state options is disabled\n (state && (stateDisabled ||\n (normalDisabled &&\n markerStateOptions.enabled === false))) ||\n // individual point marker's state options is disabled\n (state &&\n pointMarker.states &&\n pointMarker.states[state] &&\n pointMarker.states[state].enabled === false) // #1610\n ) {\n return;\n }\n point.state = state;\n if (hasMarkers) {\n markerAttribs = series.markerAttribs(point, state);\n }\n // Apply hover styles to the existing point\n // Prevent from mocked null points (#14966)\n if (point.graphic && !point.hasMockGraphic) {\n if (previousState) {\n point.graphic.removeClass('highcharts-point-' + previousState);\n }\n if (state) {\n point.graphic.addClass('highcharts-point-' + state);\n }\n if (!chart.styledMode) {\n pointAttribs = series.pointAttribs(point, state);\n pointAttribsAnimation = pick(chart.options.chart.animation, stateOptions.animation);\n var opacity_1 = pointAttribs.opacity;\n // Some inactive points (e.g. slices in pie) should apply\n // opacity also for their labels\n if (series.options.inactiveOtherPoints && isNumber(opacity_1)) {\n (point.dataLabels || []).forEach(function (label) {\n if (label &&\n !label.hasClass('highcharts-data-label-hidden')) {\n label.animate({ opacity: opacity_1 }, pointAttribsAnimation);\n }\n });\n if (point.connector) {\n point.connector.animate({ opacity: opacity_1 }, pointAttribsAnimation);\n }\n }\n point.graphic.animate(pointAttribs, pointAttribsAnimation);\n }\n if (markerAttribs) {\n point.graphic.animate(markerAttribs, pick(\n // Turn off globally:\n chart.options.chart.animation, markerStateOptions.animation, markerOptions.animation));\n }\n // Zooming in from a range with no markers to a range with markers\n if (stateMarkerGraphic) {\n stateMarkerGraphic.hide();\n }\n }\n else {\n // if a graphic is not applied to each point in the normal state,\n // create a shared graphic for the hover state\n if (state && markerStateOptions) {\n newSymbol = pointMarker.symbol || series.symbol;\n // If the point has another symbol than the previous one, throw\n // away the state marker graphic and force a new one (#1459)\n if (stateMarkerGraphic &&\n stateMarkerGraphic.currentSymbol !== newSymbol) {\n stateMarkerGraphic = stateMarkerGraphic.destroy();\n }\n // Add a new state marker graphic\n if (markerAttribs) {\n if (!stateMarkerGraphic) {\n if (newSymbol) {\n series.stateMarkerGraphic = stateMarkerGraphic =\n chart.renderer\n .symbol(newSymbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height)\n .add(series.markerGroup);\n stateMarkerGraphic.currentSymbol = newSymbol;\n }\n // Move the existing graphic\n }\n else {\n stateMarkerGraphic[move ? 'animate' : 'attr']({\n x: markerAttribs.x,\n y: markerAttribs.y\n });\n }\n }\n if (!chart.styledMode && stateMarkerGraphic &&\n point.state !== 'inactive') {\n stateMarkerGraphic.attr(series.pointAttribs(point, state));\n }\n }\n if (stateMarkerGraphic) {\n stateMarkerGraphic[state && point.isInside ? 'show' : 'hide'](); // #2450\n stateMarkerGraphic.element.point = point; // #4310\n stateMarkerGraphic.addClass(point.getClassName(), true);\n }\n }\n // Show me your halo\n var haloOptions = stateOptions.halo;\n var markerGraphic = (point.graphic || stateMarkerGraphic);\n var markerVisibility = (markerGraphic && markerGraphic.visibility || 'inherit');\n if (haloOptions &&\n haloOptions.size &&\n markerGraphic &&\n markerVisibility !== 'hidden' &&\n !point.isCluster) {\n if (!halo) {\n series.halo = halo = chart.renderer.path()\n // #5818, #5903, #6705\n .add(markerGraphic.parentGroup);\n }\n halo.show()[move ? 'animate' : 'attr']({\n d: point.haloPath(haloOptions.size)\n });\n halo.attr({\n 'class': 'highcharts-halo highcharts-color-' +\n pick(point.colorIndex, series.colorIndex) +\n (point.className ? ' ' + point.className : ''),\n 'visibility': markerVisibility,\n 'zIndex': -1 // #4929, #8276\n });\n halo.point = point; // #6055\n if (!chart.styledMode) {\n halo.attr(extend({\n 'fill': point.color || series.color,\n 'fill-opacity': haloOptions.opacity\n }, AST.filterUserAttributes(haloOptions.attributes || {})));\n }\n }\n else if (halo && halo.point && halo.point.haloPath) {\n // Animate back to 0 on the current halo point (#6055)\n halo.animate({ d: halo.point.haloPath(0) }, null, \n // Hide after unhovering. The `complete` callback runs in the\n // halo's context (#7681).\n halo.hide);\n }\n fireEvent(point, 'afterSetState', { state: state });\n };\n /**\n * Get the path definition for the halo, which is usually a shadow-like\n * circle around the currently hovered point.\n *\n * @function Highcharts.Point#haloPath\n *\n * @param {number} size\n * The radius of the circular halo.\n *\n * @return {Highcharts.SVGPathArray}\n * The path definition.\n */\n Point.prototype.haloPath = function (size) {\n var pos = this.pos();\n return pos ? this.series.chart.renderer.symbols.circle(Math.floor(pos[0]) - size, pos[1] - size, size * 2, size * 2) : [];\n };\n return Point;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Function callback when a series point is clicked. Return false to cancel the\n * action.\n *\n * @callback Highcharts.PointClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point where the event occured.\n *\n * @param {Highcharts.PointClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series point.\n *\n * @interface Highcharts.PointClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Clicked point.\n * @name Highcharts.PointClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Configuration for the data label and tooltip formatters.\n *\n * @interface Highcharts.PointLabelObject\n */ /**\n * The point's current color.\n * @name Highcharts.PointLabelObject#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * The point's current color index, used in styled mode instead of `color`. The\n * color index is inserted in class names used for styling.\n * @name Highcharts.PointLabelObject#colorIndex\n * @type {number}\n */ /**\n * The name of the related point.\n * @name Highcharts.PointLabelObject#key\n * @type {string|undefined}\n */ /**\n * The percentage for related points in a stacked series or pies.\n * @name Highcharts.PointLabelObject#percentage\n * @type {number}\n */ /**\n * The related point. The point name, if defined, is available through\n * `this.point.name`.\n * @name Highcharts.PointLabelObject#point\n * @type {Highcharts.Point}\n */ /**\n * The related series. The series name is available through `this.series.name`.\n * @name Highcharts.PointLabelObject#series\n * @type {Highcharts.Series}\n */ /**\n * The total of values in either a stack for stacked series, or a pie in a pie\n * series.\n * @name Highcharts.PointLabelObject#total\n * @type {number|undefined}\n */ /**\n * For categorized axes this property holds the category name for the point. For\n * other axes it holds the X value.\n * @name Highcharts.PointLabelObject#x\n * @type {number|string|undefined}\n */ /**\n * The y value of the point.\n * @name Highcharts.PointLabelObject#y\n * @type {number|null|undefined}\n */\n /**\n * Gets fired when the mouse leaves the area close to the point.\n *\n * @callback Highcharts.PointMouseOutCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the area close to the point.\n *\n * @callback Highcharts.PointMouseOverCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * The generic point options for all series.\n *\n * In TypeScript you have to extend `PointOptionsObject` with an additional\n * declaration to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @interface Highcharts.PointOptionsObject\n */\n /**\n * Possible option types for a data point. Use `null` to indicate a gap.\n *\n * @typedef {number|string|Highcharts.PointOptionsObject|Array<(number|string|null)>|null} Highcharts.PointOptionsType\n */\n /**\n * Gets fired when the point is removed using the `.remove()` method.\n *\n * @callback Highcharts.PointRemoveCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the point state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.PointStateValue\n */\n /**\n * Gets fired when the point is updated programmatically through the `.update()`\n * method.\n *\n * @callback Highcharts.PointUpdateCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointUpdateEventObject} event\n * Event that occured.\n */\n /**\n * Information about the update event.\n *\n * @interface Highcharts.PointUpdateEventObject\n * @extends global.Event\n */ /**\n * Options data of the update event.\n * @name Highcharts.PointUpdateEventObject#options\n * @type {Highcharts.PointOptionsType}\n */\n /**\n * @interface Highcharts.PointEventsOptionsObject\n */ /**\n * Fires when the point is selected either programmatically or following a click\n * on the point. One parameter, `event`, is passed to the function. Returning\n * `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#select\n * @type {Highcharts.PointSelectCallbackFunction|undefined}\n */ /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point. One parameter, `event`, is passed to the function.\n * Returning `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#unselect\n * @type {Highcharts.PointUnselectCallbackFunction|undefined}\n */\n /**\n * Information about the select/unselect event.\n *\n * @interface Highcharts.PointInteractionEventObject\n * @extends global.Event\n */ /**\n * @name Highcharts.PointInteractionEventObject#accumulate\n * @type {boolean}\n */\n /**\n * Gets fired when the point is selected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointSelectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointUnselectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n ''; // keeps doclets above in JS file.\n\n return Point;\n });\n _registerModule(_modules, 'Core/Pointer.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Tooltip.js'], _modules['Core/Utilities.js']], function (Color, H, Tooltip, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var charts = H.charts,\n noop = H.noop;\n var addEvent = U.addEvent,\n attr = U.attr,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n isObject = U.isObject,\n objectEach = U.objectEach,\n offset = U.offset,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The mouse and touch tracker object. Each {@link Chart} item has one\n * associated Pointer item that can be accessed from the {@link Chart.pointer}\n * property.\n *\n * @class\n * @name Highcharts.Pointer\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and tooltip\n * structures.\n */\n var Pointer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Pointer(chart, options) {\n this.lastValidTouch = {};\n this.pinchDown = [];\n this.runChartClick = false;\n this.eventsToUnbind = [];\n this.chart = chart;\n this.hasDragged = false;\n this.options = options;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set inactive state to all series that are not currently hovered,\n * or, if `inactiveOtherPoints` is set to true, set inactive state to\n * all points within that series.\n *\n * @private\n * @function Highcharts.Pointer#applyInactiveState\n *\n * @param {Array} points\n * Currently hovered points\n */\n Pointer.prototype.applyInactiveState = function (points) {\n var activeSeries = [],\n series;\n // Get all active series from the hovered points\n (points || []).forEach(function (item) {\n series = item.series;\n // Include itself\n activeSeries.push(series);\n // Include parent series\n if (series.linkedParent) {\n activeSeries.push(series.linkedParent);\n }\n // Include all child series\n if (series.linkedSeries) {\n activeSeries = activeSeries.concat(series.linkedSeries);\n }\n // Include navigator series\n if (series.navigatorSeries) {\n activeSeries.push(series.navigatorSeries);\n }\n });\n // Now loop over all series, filtering out active series\n this.chart.series.forEach(function (inactiveSeries) {\n if (activeSeries.indexOf(inactiveSeries) === -1) {\n // Inactive series\n inactiveSeries.setState('inactive', true);\n }\n else if (inactiveSeries.options.inactiveOtherPoints) {\n // Active series, but other points should be inactivated\n inactiveSeries.setAllPointsToState('inactive');\n }\n });\n };\n /**\n * Destroys the Pointer object and disconnects DOM events.\n *\n * @function Highcharts.Pointer#destroy\n */\n Pointer.prototype.destroy = function () {\n var pointer = this;\n this.eventsToUnbind.forEach(function (unbind) { return unbind(); });\n this.eventsToUnbind = [];\n if (!H.chartCount) {\n if (Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = Pointer.unbindDocumentMouseUp();\n }\n if (Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = (Pointer.unbindDocumentTouchEnd());\n }\n }\n // memory and CPU leak\n clearInterval(pointer.tooltipTimeout);\n objectEach(pointer, function (_val, prop) {\n pointer[prop] = void 0;\n });\n };\n /**\n * Calculate attrs for selection marker.\n * @private\n * @function Highcharts.Pointer#getSelectionMarkerAttrs\n * @emits getSelectionMarkerAttrs\n */\n Pointer.prototype.getSelectionMarkerAttrs = function (chartX, chartY) {\n var _this = this;\n var e = {\n args: { chartX: chartX,\n chartY: chartY },\n attrs: {},\n shapeType: 'rect'\n };\n fireEvent(this, 'getSelectionMarkerAttrs', e, function (e) {\n var _a = _this,\n chart = _a.chart,\n _b = _a.mouseDownX,\n mouseDownX = _b === void 0 ? 0 : _b,\n _c = _a.mouseDownY,\n mouseDownY = _c === void 0 ? 0 : _c,\n zoomHor = _a.zoomHor,\n zoomVert = _a.zoomVert,\n attrs = e.attrs;\n var size;\n attrs.x = chart.plotLeft;\n attrs.y = chart.plotTop;\n attrs.width = zoomHor ? 1 : chart.plotWidth;\n attrs.height = zoomVert ? 1 : chart.plotHeight;\n // Adjust the width of the selection marker\n if (zoomHor) {\n size = chartX - mouseDownX;\n attrs.width = Math.abs(size);\n attrs.x = (size > 0 ? 0 : size) + mouseDownX;\n }\n // Adjust the height of the selection marker\n if (zoomVert) {\n size = chartY - mouseDownY;\n attrs.height = Math.abs(size);\n attrs.y = (size > 0 ? 0 : size) + mouseDownY;\n }\n });\n return e;\n };\n /**\n * Perform a drag operation in response to a mousemove event while the mouse\n * is down.\n * @private\n * @function Highcharts.Pointer#drag\n */\n Pointer.prototype.drag = function (e) {\n var chart = this.chart,\n chartOptions = chart.options.chart,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n mouseDownX = (this.mouseDownX || 0),\n mouseDownY = (this.mouseDownY || 0),\n panningEnabled = isObject(chartOptions.panning) ?\n chartOptions.panning && chartOptions.panning.enabled :\n chartOptions.panning,\n panKey = (chartOptions.panKey && e[chartOptions.panKey + 'Key']);\n var chartX = e.chartX,\n chartY = e.chartY,\n clickedInside,\n selectionMarker = this.selectionMarker;\n // If the device supports both touch and mouse (like IE11), and we are\n // touch-dragging inside the plot area, don't handle the mouse event.\n // #4339.\n if (selectionMarker && selectionMarker.touch) {\n return;\n }\n // If the mouse is outside the plot area, adjust to coordinates\n // inside to prevent the selection marker from going outside\n if (chartX < plotLeft) {\n chartX = plotLeft;\n }\n else if (chartX > plotLeft + plotWidth) {\n chartX = plotLeft + plotWidth;\n }\n if (chartY < plotTop) {\n chartY = plotTop;\n }\n else if (chartY > plotTop + plotHeight) {\n chartY = plotTop + plotHeight;\n }\n // determine if the mouse has moved more than 10px\n this.hasDragged = Math.sqrt(Math.pow(mouseDownX - chartX, 2) +\n Math.pow(mouseDownY - chartY, 2));\n if (this.hasDragged > 10) {\n clickedInside = chart.isInsidePlot(mouseDownX - plotLeft, mouseDownY - plotTop, {\n visiblePlotOnly: true\n });\n var _a = this.getSelectionMarkerAttrs(chartX,\n chartY),\n shapeType = _a.shapeType,\n attrs = _a.attrs;\n // make a selection\n if ((chart.hasCartesianSeries || chart.mapView) &&\n (this.zoomX || this.zoomY) &&\n clickedInside &&\n !panKey) {\n if (!selectionMarker) {\n this.selectionMarker = selectionMarker =\n chart.renderer[shapeType]();\n selectionMarker\n .attr({\n 'class': 'highcharts-selection-marker',\n zIndex: 7\n })\n .add();\n if (!chart.styledMode) {\n selectionMarker.attr({\n fill: chartOptions.selectionMarkerFill ||\n color(\"#335cad\" /* Palette.highlightColor80 */)\n .setOpacity(0.25).get()\n });\n }\n }\n }\n if (selectionMarker) {\n selectionMarker.attr(attrs);\n }\n // panning\n if (clickedInside &&\n !selectionMarker &&\n panningEnabled) {\n chart.pan(e, chartOptions.panning);\n }\n }\n };\n /**\n * Start a drag operation.\n * @private\n * @function Highcharts.Pointer#dragStart\n */\n Pointer.prototype.dragStart = function (e) {\n var chart = this.chart;\n // Record the start position\n chart.mouseIsDown = e.type;\n chart.cancelClick = false;\n chart.mouseDownX = this.mouseDownX = e.chartX;\n chart.mouseDownY = this.mouseDownY = e.chartY;\n };\n /**\n * Get selection box to calculate extremes\n * @private\n * @function Highcharts.Pointer#getSelectionBox\n * @emits getSelectionBox\n */\n Pointer.prototype.getSelectionBox = function (marker) {\n var e = {\n args: { marker: marker },\n result: {}\n };\n fireEvent(this, 'getSelectionBox', e, function (e) {\n e.result = {\n x: marker.attr ? +marker.attr('x') : marker.x,\n y: marker.attr ? +marker.attr('y') : marker.y,\n width: marker.attr ? marker.attr('width') : marker.width,\n height: marker.attr ? marker.attr('height') : marker.height\n };\n });\n return e.result;\n };\n /**\n * On mouse up or touch end across the entire document, drop the selection.\n * @private\n * @function Highcharts.Pointer#drop\n */\n Pointer.prototype.drop = function (e) {\n var pointer = this,\n chart = this.chart,\n hasPinched = this.hasPinched;\n if (this.selectionMarker) {\n var _a = this.getSelectionBox(this.selectionMarker),\n x_1 = _a.x,\n y_1 = _a.y,\n width_1 = _a.width,\n height_1 = _a.height;\n var selectionData_1 = {\n originalEvent: e,\n xAxis: [],\n yAxis: [],\n x: x_1,\n y: y_1,\n width: width_1,\n height: height_1\n }, \n // Start by false runZoom, unless when we have a mapView, in\n // which case the zoom will be handled in the selection event.\n runZoom_1 = Boolean(chart.mapView);\n // a selection has been made\n if (this.hasDragged || hasPinched) {\n // record each axis' min and max\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled &&\n defined(axis.min) &&\n (hasPinched ||\n pointer[{\n xAxis: 'zoomX',\n yAxis: 'zoomY'\n }[axis.coll]]) &&\n isNumber(x_1) &&\n isNumber(y_1) &&\n isNumber(width_1) &&\n isNumber(height_1)) { // #859, #3569\n var horiz = axis.horiz,\n minPixelPadding = e.type === 'touchend' ?\n axis.minPixelPadding :\n 0, // #1207, #3075\n selectionMin = axis.toValue((horiz ? x_1 : y_1) + minPixelPadding),\n selectionMax = axis.toValue((horiz ? x_1 + width_1 : y_1 + height_1) -\n minPixelPadding);\n selectionData_1[axis.coll].push({\n axis: axis,\n // Min/max for reversed axes\n min: Math.min(selectionMin, selectionMax),\n max: Math.max(selectionMin, selectionMax)\n });\n runZoom_1 = true;\n }\n });\n if (runZoom_1) {\n fireEvent(chart, 'selection', selectionData_1, function (args) {\n chart.zoom(extend(args, hasPinched ?\n { animation: false } :\n null));\n });\n }\n }\n if (isNumber(chart.index)) {\n this.selectionMarker = this.selectionMarker.destroy();\n }\n // Reset scaling preview\n if (hasPinched) {\n this.scaleGroups();\n }\n }\n // Reset all. Check isNumber because it may be destroyed on mouse up\n // (#877)\n if (chart && isNumber(chart.index)) {\n css(chart.container, { cursor: chart._cursor });\n chart.cancelClick = this.hasDragged > 10; // #370\n chart.mouseIsDown = this.hasDragged = this.hasPinched = false;\n this.pinchDown = [];\n }\n };\n /**\n * Finds the closest point to a set of coordinates, using the k-d-tree\n * algorithm.\n *\n * @function Highcharts.Pointer#findNearestKDPoint\n *\n * @param {Array} series\n * All the series to search in.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} e\n * The pointer event object, containing chart coordinates of the pointer.\n *\n * @return {Highcharts.Point|undefined}\n * The point closest to given coordinates.\n */\n Pointer.prototype.findNearestKDPoint = function (series, shared, e) {\n var closest;\n /** @private */\n function sort(p1, p2) {\n var isCloserX = p1.distX - p2.distX,\n isCloser = p1.dist - p2.dist,\n isAbove = ((p2.series.group && p2.series.group.zIndex) -\n (p1.series.group && p1.series.group.zIndex));\n var result;\n // We have two points which are not in the same place on xAxis\n // and shared tooltip:\n if (isCloserX !== 0 && shared) { // #5721\n result = isCloserX;\n // Points are not exactly in the same place on x/yAxis:\n }\n else if (isCloser !== 0) {\n result = isCloser;\n // The same xAxis and yAxis position, sort by z-index:\n }\n else if (isAbove !== 0) {\n result = isAbove;\n // The same zIndex, sort by array index:\n }\n else {\n result =\n p1.series.index > p2.series.index ?\n -1 :\n 1;\n }\n return result;\n }\n series.forEach(function (s) {\n var noSharedTooltip = s.noSharedTooltip && shared,\n compareX = (!noSharedTooltip &&\n s.options.findNearestPointBy.indexOf('y') < 0),\n point = s.searchPoint(e,\n compareX);\n if ( // Check that we actually found a point on the series.\n isObject(point, true) && point.series &&\n // Use the new point if it is closer.\n (!isObject(closest, true) ||\n (sort(closest, point) > 0))) {\n closest = point;\n }\n });\n return closest;\n };\n /**\n * @private\n * @function Highcharts.Pointer#getChartCoordinatesFromPoint\n */\n Pointer.prototype.getChartCoordinatesFromPoint = function (point, inverted) {\n var series = point.series,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n shapeArgs = point.shapeArgs;\n if (xAxis && yAxis) {\n var x = pick(point.clientX,\n point.plotX);\n var y = point.plotY || 0;\n if (point.isNode &&\n shapeArgs &&\n isNumber(shapeArgs.x) &&\n isNumber(shapeArgs.y)) {\n x = shapeArgs.x;\n y = shapeArgs.y;\n }\n return inverted ? {\n chartX: yAxis.len + yAxis.pos - y,\n chartY: xAxis.len + xAxis.pos - x\n } : {\n chartX: x + xAxis.pos,\n chartY: y + yAxis.pos\n };\n }\n if (shapeArgs && shapeArgs.x && shapeArgs.y) {\n // E.g. pies do not have axes\n return {\n chartX: shapeArgs.x,\n chartY: shapeArgs.y\n };\n }\n };\n /**\n * Return the cached chartPosition if it is available on the Pointer,\n * otherwise find it. Running offset is quite expensive, so it should be\n * avoided when we know the chart hasn't moved.\n *\n * @function Highcharts.Pointer#getChartPosition\n *\n * @return {Highcharts.ChartPositionObject}\n * The offset of the chart container within the page\n */\n Pointer.prototype.getChartPosition = function () {\n if (this.chartPosition) {\n return this.chartPosition;\n }\n var container = this.chart.container;\n var pos = offset(container);\n this.chartPosition = {\n left: pos.left,\n top: pos.top,\n scaleX: 1,\n scaleY: 1\n };\n var offsetWidth = container.offsetWidth;\n var offsetHeight = container.offsetHeight;\n // #13342 - tooltip was not visible in Chrome, when chart\n // updates height.\n if (offsetWidth > 2 && // #13342\n offsetHeight > 2 // #13342\n ) {\n this.chartPosition.scaleX = pos.width / offsetWidth;\n this.chartPosition.scaleY = pos.height / offsetHeight;\n }\n return this.chartPosition;\n };\n /**\n * Get the click position in terms of axis values.\n *\n * @function Highcharts.Pointer#getCoordinates\n *\n * @param {Highcharts.PointerEventObject} e\n * Pointer event, extended with `chartX` and `chartY` properties.\n *\n * @return {Highcharts.PointerAxisCoordinatesObject}\n * Axis coordinates.\n */\n Pointer.prototype.getCoordinates = function (e) {\n var coordinates = {\n xAxis: [],\n yAxis: []\n };\n this.chart.axes.forEach(function (axis) {\n coordinates[axis.isXAxis ? 'xAxis' : 'yAxis'].push({\n axis: axis,\n value: axis.toValue(e[axis.horiz ? 'chartX' : 'chartY'])\n });\n });\n return coordinates;\n };\n /**\n * Calculates what is the current hovered point/points and series.\n *\n * @private\n * @function Highcharts.Pointer#getHoverData\n *\n * @param {Highcharts.Point|undefined} existingHoverPoint\n * The point currently being hovered.\n *\n * @param {Highcharts.Series|undefined} existingHoverSeries\n * The series currently being hovered.\n *\n * @param {Array} series\n * All the series in the chart.\n *\n * @param {boolean} isDirectTouch\n * Is the pointer directly hovering the point.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The triggering event, containing chart coordinates of the pointer.\n *\n * @return {Object}\n * Object containing resulting hover data: hoverPoint, hoverSeries, and\n * hoverPoints.\n */\n Pointer.prototype.getHoverData = function (existingHoverPoint, existingHoverSeries, series, isDirectTouch, shared, e) {\n var hoverPoints = [],\n useExisting = !!(isDirectTouch && existingHoverPoint),\n filter = function (s) {\n return (s.visible &&\n !(!shared && s.directTouch) && // #3821\n pick(s.options.enableMouseTracking,\n true));\n };\n var hoverSeries = existingHoverSeries, \n // Which series to look in for the hover point\n searchSeries, \n // Parameters needed for beforeGetHoverData event.\n eventArgs = {\n chartX: e ? e.chartX : void 0,\n chartY: e ? e.chartY : void 0,\n shared: shared\n };\n // Find chart.hoverPane and update filter method in polar.\n fireEvent(this, 'beforeGetHoverData', eventArgs);\n var notSticky = hoverSeries && !hoverSeries.stickyTracking;\n searchSeries = notSticky ?\n // Only search on hovered series if it has stickyTracking false\n [hoverSeries] :\n // Filter what series to look in.\n series.filter(function (s) { return s.stickyTracking &&\n (eventArgs.filter || filter)(s); });\n // Use existing hovered point or find the one closest to coordinates.\n var hoverPoint = useExisting || !e ?\n existingHoverPoint :\n this.findNearestKDPoint(searchSeries,\n shared,\n e);\n // Assign hover series\n hoverSeries = hoverPoint && hoverPoint.series;\n // If we have a hoverPoint, assign hoverPoints.\n if (hoverPoint) {\n // When tooltip is shared, it displays more than one point\n if (shared && !hoverSeries.noSharedTooltip) {\n searchSeries = series.filter(function (s) {\n return eventArgs.filter ?\n eventArgs.filter(s) : filter(s) && !s.noSharedTooltip;\n });\n // Get all points with the same x value as the hoverPoint\n searchSeries.forEach(function (s) {\n var point = find(s.points,\n function (p) {\n return p.x === hoverPoint.x && !p.isNull;\n });\n if (isObject(point)) {\n /*\n * Boost returns a minimal point. Convert it to a usable\n * point for tooltip and states.\n */\n if (s.boosted && s.boost) {\n point = s.boost.getPoint(point);\n }\n hoverPoints.push(point);\n }\n });\n }\n else {\n hoverPoints.push(hoverPoint);\n }\n }\n // Check whether the hoverPoint is inside pane we are hovering over.\n eventArgs = { hoverPoint: hoverPoint };\n fireEvent(this, 'afterGetHoverData', eventArgs);\n return {\n hoverPoint: eventArgs.hoverPoint,\n hoverSeries: hoverSeries,\n hoverPoints: hoverPoints\n };\n };\n /**\n * @private\n * @function Highcharts.Pointer#getPointFromEvent\n */\n Pointer.prototype.getPointFromEvent = function (e) {\n var target = e.target,\n point;\n while (target && !point) {\n point = target.point;\n target = target.parentNode;\n }\n return point;\n };\n /**\n * @private\n * @function Highcharts.Pointer#onTrackerMouseOut\n */\n Pointer.prototype.onTrackerMouseOut = function (e) {\n var chart = this.chart;\n var relatedTarget = e.relatedTarget || e.toElement;\n var series = chart.hoverSeries;\n this.isDirectTouch = false;\n if (series &&\n relatedTarget &&\n !series.stickyTracking &&\n !this.inClass(relatedTarget, 'highcharts-tooltip') &&\n (!this.inClass(relatedTarget, 'highcharts-series-' + series.index) || // #2499, #4465, #5553\n !this.inClass(relatedTarget, 'highcharts-tracker'))) {\n series.onMouseOut();\n }\n };\n /**\n * Utility to detect whether an element has, or has a parent with, a\n * specific class name. Used on detection of tracker objects and on deciding\n * whether hovering the tooltip should cause the active series to mouse out.\n *\n * @function Highcharts.Pointer#inClass\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The element to investigate.\n *\n * @param {string} className\n * The class name to look for.\n *\n * @return {boolean|undefined}\n * True if either the element or one of its parents has the given class\n * name.\n */\n Pointer.prototype.inClass = function (element, className) {\n var elem = element,\n elemClassName;\n while (elem) {\n elemClassName = attr(elem, 'class');\n if (elemClassName) {\n if (elemClassName.indexOf(className) !== -1) {\n return true;\n }\n if (elemClassName.indexOf('highcharts-container') !== -1) {\n return false;\n }\n }\n elem = elem.parentElement;\n }\n };\n /**\n * Initialize the Pointer.\n *\n * @private\n * @function Highcharts.Pointer#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and\n * tooltip structures.\n */\n Pointer.prototype.init = function (chart, options) {\n // Store references\n this.options = options;\n this.chart = chart;\n // Do we need to handle click on a touch device?\n this.runChartClick = Boolean(options.chart.events && options.chart.events.click);\n this.pinchDown = [];\n this.lastValidTouch = {};\n if (Tooltip) {\n /**\n * Tooltip object for points of series.\n *\n * @name Highcharts.Chart#tooltip\n * @type {Highcharts.Tooltip}\n */\n chart.tooltip = new Tooltip(chart, options.tooltip);\n }\n this.setDOMEvents();\n };\n /**\n * Takes a browser event object and extends it with custom Highcharts\n * properties `chartX` and `chartY` in order to work on the internal\n * coordinate system.\n *\n * On map charts, the properties `lon` and `lat` are added to the event\n * object given that the chart has projection information.\n *\n * @function Highcharts.Pointer#normalize\n *\n * @param {global.MouseEvent|global.PointerEvent|global.TouchEvent} e\n * Event object in standard browsers.\n *\n * @param {Highcharts.OffsetObject} [chartPosition]\n * Additional chart offset.\n *\n * @return {Highcharts.PointerEventObject}\n * A browser event with extended properties `chartX` and `chartY`.\n */\n Pointer.prototype.normalize = function (e, chartPosition) {\n var touches = e.touches;\n // iOS (#2757)\n var ePos = (touches ?\n touches.length ?\n touches.item(0) :\n (pick(// #13534\n touches.changedTouches,\n e.changedTouches))[0] :\n e);\n // Get mouse position\n if (!chartPosition) {\n chartPosition = this.getChartPosition();\n }\n var chartX = ePos.pageX - chartPosition.left,\n chartY = ePos.pageY - chartPosition.top;\n // #11329 - when there is scaling on a parent element, we need to take\n // this into account\n chartX /= chartPosition.scaleX;\n chartY /= chartPosition.scaleY;\n return extend(e, {\n chartX: Math.round(chartX),\n chartY: Math.round(chartY)\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerClick\n */\n Pointer.prototype.onContainerClick = function (e) {\n var chart = this.chart;\n var hoverPoint = chart.hoverPoint;\n var pEvt = this.normalize(e);\n var plotLeft = chart.plotLeft;\n var plotTop = chart.plotTop;\n if (!chart.cancelClick) {\n // On tracker click, fire the series and point events. #783, #1583\n if (hoverPoint &&\n this.inClass(pEvt.target, 'highcharts-tracker')) {\n // the series click event\n fireEvent(hoverPoint.series, 'click', extend(pEvt, {\n point: hoverPoint\n }));\n // the point click event\n if (chart.hoverPoint) { // it may be destroyed (#1844)\n hoverPoint.firePointEvent('click', pEvt);\n }\n // When clicking outside a tracker, fire a chart event\n }\n else {\n extend(pEvt, this.getCoordinates(pEvt));\n // fire a click event in the chart\n if (chart.isInsidePlot(pEvt.chartX - plotLeft, pEvt.chartY - plotTop, {\n visiblePlotOnly: true\n })) {\n fireEvent(chart, 'click', pEvt);\n }\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerMouseDown\n */\n Pointer.prototype.onContainerMouseDown = function (e) {\n var isPrimaryButton = ((e.buttons || e.button) & 1) === 1;\n // Normalize before the 'if' for the legacy IE (#7850)\n e = this.normalize(e);\n // #11635, Firefox does not reliable fire move event after click scroll\n if (H.isFirefox &&\n e.button !== 0) {\n this.onContainerMouseMove(e);\n }\n // #11635, limiting to primary button (incl. IE 8 support)\n if (typeof e.button === 'undefined' ||\n isPrimaryButton) {\n this.zoomOption(e);\n // #295, #13737 solve conflict between container drag and chart zoom\n if (isPrimaryButton &&\n e.preventDefault) {\n e.preventDefault();\n }\n this.dragStart(e);\n }\n };\n /**\n * When mouse leaves the container, hide the tooltip.\n * @private\n * @function Highcharts.Pointer#onContainerMouseLeave\n */\n Pointer.prototype.onContainerMouseLeave = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n var tooltip = this.chart.tooltip;\n e = this.normalize(e);\n // #4886, MS Touch end fires mouseleave but with no related target\n if (chart &&\n (e.relatedTarget || e.toElement)) {\n chart.pointer.reset();\n // Also reset the chart position, used in #149 fix\n chart.pointer.chartPosition = void 0;\n }\n // #11635, Firefox wheel scroll does not fire out events consistently\n if (tooltip && !tooltip.isHidden) {\n this.reset();\n }\n };\n /**\n * When mouse enters the container, delete pointer's chartPosition.\n * @private\n * @function Highcharts.Pointer#onContainerMouseEnter\n */\n Pointer.prototype.onContainerMouseEnter = function (e) {\n delete this.chartPosition;\n };\n /**\n * The mousemove, touchmove and touchstart event handler\n * @private\n * @function Highcharts.Pointer#onContainerMouseMove\n */\n Pointer.prototype.onContainerMouseMove = function (e) {\n var chart = this.chart,\n tooltip = chart.tooltip,\n pEvt = this.normalize(e);\n this.setHoverChartIndex();\n // In IE8 we apparently need this returnValue set to false in order to\n // avoid text being selected. But in Chrome, e.returnValue is prevented,\n // plus we don't need to run e.preventDefault to prevent selected text\n // in modern browsers. So we set it conditionally. Remove it when IE8 is\n // no longer needed. #2251, #3224.\n if (!pEvt.preventDefault) {\n pEvt.returnValue = false;\n }\n if (chart.mouseIsDown === 'mousedown' || this.touchSelect(pEvt)) {\n this.drag(pEvt);\n }\n // Show the tooltip and run mouse over events (#977)\n if (!chart.openMenu &&\n (this.inClass(pEvt.target, 'highcharts-tracker') ||\n chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n })) &&\n // If the tooltip has stickOnContact enabled, do nothing. This\n // applies regardless of any combinations of the `split` and\n // `useHTML` options.\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt))) {\n if (this.inClass(pEvt.target, 'highcharts-no-tooltip')) {\n this.reset(false, 0);\n }\n else {\n this.runPointActions(pEvt);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentTouchEnd\n */\n Pointer.prototype.onDocumentTouchEnd = function (e) {\n var hoverChart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart) {\n hoverChart.pointer.drop(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchMove\n */\n Pointer.prototype.onContainerTouchMove = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseMove(e);\n }\n else {\n this.touch(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchStart\n */\n Pointer.prototype.onContainerTouchStart = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseDown(e);\n }\n else {\n this.zoomOption(e);\n this.touch(e, true);\n }\n };\n /**\n * Special handler for mouse move that will hide the tooltip when the mouse\n * leaves the plotarea. Issue #149 workaround. The mouseleave event does not\n * always fire.\n * @private\n * @function Highcharts.Pointer#onDocumentMouseMove\n */\n Pointer.prototype.onDocumentMouseMove = function (e) {\n var chart = this.chart;\n var tooltip = chart.tooltip;\n var chartPosition = this.chartPosition;\n var pEvt = this.normalize(e,\n chartPosition);\n // If we're outside, hide the tooltip\n if (chartPosition &&\n !chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n }) &&\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt)) &&\n !this.inClass(pEvt.target, 'highcharts-tracker')) {\n this.reset();\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentMouseUp\n */\n Pointer.prototype.onDocumentMouseUp = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (chart) {\n chart.pointer.drop(e);\n }\n };\n /**\n * Handle touch events with two touches\n * @private\n * @function Highcharts.Pointer#pinch\n */\n Pointer.prototype.pinch = function (e) {\n var self = this,\n chart = self.chart,\n pinchDown = self.pinchDown,\n touches = (e.touches || []),\n touchesLength = touches.length,\n lastValidTouch = self.lastValidTouch,\n hasZoom = self.hasZoom,\n transform = {},\n fireClickEvent = touchesLength === 1 && ((self.inClass(e.target, 'highcharts-tracker') &&\n chart.runTrackerClick) ||\n self.runChartClick),\n clip = {},\n tooltip = self.chart.tooltip,\n followTouchMove = touchesLength === 1 &&\n pick((tooltip && tooltip.options.followTouchMove),\n true);\n var selectionMarker = self.selectionMarker;\n // Don't initiate panning until the user has pinched. This prevents us\n // from blocking page scrolling as users scroll down a long page\n // (#4210).\n if (touchesLength > 1) {\n self.initiated = true;\n }\n else if (followTouchMove) {\n // #16119: Prevent blocking scroll when single-finger panning is\n // not enabled\n self.initiated = false;\n }\n // On touch devices, only proceed to trigger click if a handler is\n // defined\n if (hasZoom &&\n self.initiated &&\n !fireClickEvent &&\n e.cancelable !== false) {\n e.preventDefault();\n }\n // Normalize each touch\n [].map.call(touches, function (e) {\n return self.normalize(e);\n });\n // Register the touch start position\n if (e.type === 'touchstart') {\n [].forEach.call(touches, function (e, i) {\n pinchDown[i] = { chartX: e.chartX, chartY: e.chartY };\n });\n lastValidTouch.x = [pinchDown[0].chartX, pinchDown[1] &&\n pinchDown[1].chartX];\n lastValidTouch.y = [pinchDown[0].chartY, pinchDown[1] &&\n pinchDown[1].chartY];\n // Identify the data bounds in pixels\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled) {\n var bounds = chart.bounds[axis.horiz ? 'h' : 'v'],\n minPixelPadding = axis.minPixelPadding,\n min = axis.toPixels(Math.min(pick(axis.options.min,\n axis.dataMin),\n axis.dataMin)),\n max = axis.toPixels(Math.max(pick(axis.options.max,\n axis.dataMax),\n axis.dataMax)),\n absMin = Math.min(min,\n max),\n absMax = Math.max(min,\n max);\n // Store the bounds for use in the touchmove handler\n bounds.min = Math.min(axis.pos, absMin - minPixelPadding);\n bounds.max = Math.max(axis.pos + axis.len, absMax + minPixelPadding);\n }\n });\n self.res = true; // reset on next move\n // Optionally move the tooltip on touchmove\n }\n else if (followTouchMove) {\n this.runPointActions(self.normalize(e));\n // Event type is touchmove, handle panning and pinching\n }\n else if (pinchDown.length) { // can be 0 when releasing, if touchend\n // fires first\n fireEvent(chart, 'touchpan', { originalEvent: e }, function () {\n // Set the marker\n if (!selectionMarker) {\n // @todo It's a mock object, so maybe we need a separate\n // interface\n self.selectionMarker = selectionMarker = extend({\n destroy: noop,\n touch: true\n }, chart.plotBox);\n }\n self.pinchTranslate(pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n self.hasPinched = hasZoom;\n // Scale and translate the groups to provide visual feedback\n // during pinching\n self.scaleGroups(transform, clip);\n });\n if (self.res) {\n self.res = false;\n this.reset(false, 0);\n }\n }\n };\n /**\n * Run translation operations\n * @private\n * @function Highcharts.Pointer#pinchTranslate\n */\n Pointer.prototype.pinchTranslate = function (pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {\n if (this.zoomHor) {\n this.pinchTranslateDirection(true, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n if (this.zoomVert) {\n this.pinchTranslateDirection(false, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n };\n /**\n * Run translation operations for each direction (horizontal and vertical)\n * independently.\n * @private\n * @function Highcharts.Pointer#pinchTranslateDirection\n */\n Pointer.prototype.pinchTranslateDirection = function (horiz, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch, forcedScale) {\n var chart = this.chart, xy = horiz ? 'x' : 'y', XY = horiz ? 'X' : 'Y', sChartXY = ('chart' + XY), wh = horiz ? 'width' : 'height', plotLeftTop = chart['plot' + (horiz ? 'Left' : 'Top')], inverted = chart.inverted, bounds = chart.bounds[horiz ? 'h' : 'v'], singleTouch = pinchDown.length === 1, touch0Start = pinchDown[0][sChartXY], touch1Start = !singleTouch && pinchDown[1][sChartXY], setScale = function () {\n // Don't zoom if fingers are too close on this axis\n if (typeof touch1Now === 'number' &&\n Math.abs(touch0Start - touch1Start) > 20) {\n scale = forcedScale ||\n Math.abs(touch0Now - touch1Now) /\n Math.abs(touch0Start - touch1Start);\n }\n clipXY = ((plotLeftTop - touch0Now) / scale) + touch0Start;\n selectionWH = chart['plot' + (horiz ? 'Width' : 'Height')] / scale;\n };\n var selectionWH,\n selectionXY,\n clipXY,\n scale = forcedScale || 1,\n touch0Now = touches[0][sChartXY],\n touch1Now = !singleTouch && touches[1][sChartXY],\n outOfBounds;\n // Set the scale, first pass\n setScale();\n // The clip position (x or y) is altered if out of bounds, the selection\n // position is not\n selectionXY = clipXY;\n // Out of bounds\n if (selectionXY < bounds.min) {\n selectionXY = bounds.min;\n outOfBounds = true;\n }\n else if (selectionXY + selectionWH > bounds.max) {\n selectionXY = bounds.max - selectionWH;\n outOfBounds = true;\n }\n // Is the chart dragged off its bounds, determined by dataMin and\n // dataMax?\n if (outOfBounds) {\n // Modify the touchNow position in order to create an elastic drag\n // movement. This indicates to the user that the chart is responsive\n // but can't be dragged further.\n touch0Now -= 0.8 * (touch0Now - lastValidTouch[xy][0]);\n if (typeof touch1Now === 'number') {\n touch1Now -= 0.8 * (touch1Now - lastValidTouch[xy][1]);\n }\n // Set the scale, second pass to adapt to the modified touchNow\n // positions\n setScale();\n }\n else {\n lastValidTouch[xy] = [touch0Now, touch1Now];\n }\n // Set geometry for clipping, selection and transformation\n if (!inverted) {\n clip[xy] = clipXY - plotLeftTop;\n clip[wh] = selectionWH;\n }\n var scaleKey = inverted ?\n (horiz ? 'scaleY' : 'scaleX') : 'scale' + XY;\n var transformScale = inverted ? 1 / scale : scale;\n selectionMarker[wh] = selectionWH;\n selectionMarker[xy] = selectionXY;\n transform[scaleKey] = scale;\n transform['translate' + XY] = (transformScale * plotLeftTop) +\n (touch0Now - (transformScale * touch0Start));\n };\n /**\n * Reset the tracking by hiding the tooltip, the hover series state and the\n * hover point\n *\n * @function Highcharts.Pointer#reset\n *\n * @param {boolean} [allowMove]\n * Instead of destroying the tooltip altogether, allow moving it if\n * possible.\n *\n * @param {number} [delay]\n */\n Pointer.prototype.reset = function (allowMove, delay) {\n var pointer = this,\n chart = pointer.chart,\n hoverSeries = chart.hoverSeries,\n hoverPoint = chart.hoverPoint,\n hoverPoints = chart.hoverPoints,\n tooltip = chart.tooltip,\n tooltipPoints = tooltip && tooltip.shared ?\n hoverPoints :\n hoverPoint;\n // Check if the points have moved outside the plot area (#1003, #4736,\n // #5101)\n if (allowMove && tooltipPoints) {\n splat(tooltipPoints).forEach(function (point) {\n if (point.series.isCartesian &&\n typeof point.plotX === 'undefined') {\n allowMove = false;\n }\n });\n }\n // Just move the tooltip, #349\n if (allowMove) {\n if (tooltip && tooltipPoints && splat(tooltipPoints).length) {\n tooltip.refresh(tooltipPoints);\n if (tooltip.shared && hoverPoints) { // #8284\n hoverPoints.forEach(function (point) {\n point.setState(point.state, true);\n if (point.series.isCartesian) {\n if (point.series.xAxis.crosshair) {\n point.series.xAxis\n .drawCrosshair(null, point);\n }\n if (point.series.yAxis.crosshair) {\n point.series.yAxis\n .drawCrosshair(null, point);\n }\n }\n });\n }\n else if (hoverPoint) { // #2500\n hoverPoint.setState(hoverPoint.state, true);\n chart.axes.forEach(function (axis) {\n if (axis.crosshair &&\n hoverPoint.series[axis.coll] === axis) {\n axis.drawCrosshair(null, hoverPoint);\n }\n });\n }\n }\n // Full reset\n }\n else {\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n if (hoverSeries) {\n hoverSeries.onMouseOut();\n }\n if (tooltip) {\n tooltip.hide(delay);\n }\n if (pointer.unDocMouseMove) {\n pointer.unDocMouseMove = pointer.unDocMouseMove();\n }\n // Remove crosshairs\n chart.axes.forEach(function (axis) {\n axis.hideCrosshair();\n });\n pointer.hoverX = chart.hoverPoints = chart.hoverPoint = null;\n }\n };\n /**\n * With line type charts with a single tracker, get the point closest to the\n * mouse. Run Point.onMouseOver and display tooltip for the point or points.\n *\n * @private\n * @function Highcharts.Pointer#runPointActions\n *\n * @emits Highcharts.Point#event:mouseOut\n * @emits Highcharts.Point#event:mouseOver\n */\n Pointer.prototype.runPointActions = function (e, p, force) {\n var pointer = this,\n chart = pointer.chart,\n series = chart.series,\n tooltip = (chart.tooltip && chart.tooltip.options.enabled ?\n chart.tooltip :\n void 0),\n shared = (tooltip ?\n tooltip.shared :\n false);\n var hoverPoint = p || chart.hoverPoint,\n hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries;\n var // onMouseOver or already hovering a series with directTouch\n isDirectTouch = (!e || e.type !== 'touchmove') && (!!p || ((hoverSeries && hoverSeries.directTouch) &&\n pointer.isDirectTouch)),\n hoverData = this.getHoverData(hoverPoint,\n hoverSeries,\n series,\n isDirectTouch,\n shared,\n e);\n // Update variables from hoverData.\n hoverPoint = hoverData.hoverPoint;\n hoverSeries = hoverData.hoverSeries;\n var points = hoverData.hoverPoints,\n followPointer = hoverSeries &&\n hoverSeries.tooltipOptions.followPointer &&\n !hoverSeries.tooltipOptions.split,\n useSharedTooltip = (shared &&\n hoverSeries &&\n !hoverSeries.noSharedTooltip);\n // Refresh tooltip for kdpoint if new hover point or tooltip was hidden\n // #3926, #4200\n if (hoverPoint &&\n (force ||\n hoverPoint !== chart.hoverPoint ||\n (tooltip && tooltip.isHidden))) {\n (chart.hoverPoints || []).forEach(function (p) {\n if (points.indexOf(p) === -1) {\n p.setState();\n }\n });\n // Set normal state to previous series\n if (chart.hoverSeries !== hoverSeries) {\n hoverSeries.onMouseOver();\n }\n pointer.applyInactiveState(points);\n // Do mouseover on all points (#3919, #3985, #4410, #5622)\n (points || []).forEach(function (p) {\n p.setState('hover');\n });\n // If tracking is on series in stead of on each point,\n // fire mouseOver on hover point. // #4448\n if (chart.hoverPoint) {\n chart.hoverPoint.firePointEvent('mouseOut');\n }\n // Hover point may have been destroyed in the event handlers (#7127)\n if (!hoverPoint.series) {\n return;\n }\n /**\n * Contains all hovered points.\n *\n * @name Highcharts.Chart#hoverPoints\n * @type {Array|null}\n */\n chart.hoverPoints = points;\n /**\n * Contains the original hovered point.\n *\n * @name Highcharts.Chart#hoverPoint\n * @type {Highcharts.Point|null}\n */\n chart.hoverPoint = hoverPoint;\n /**\n * Hover state should not be lost when axis is updated (#12569)\n * Axis.update runs pointer.reset which uses chart.hoverPoint.state\n * to apply state which does not exist in hoverPoint yet.\n * The mouseOver event should be triggered when hoverPoint\n * is correct.\n */\n hoverPoint.firePointEvent('mouseOver', void 0, function () {\n // Draw tooltip if necessary\n if (tooltip && hoverPoint) {\n tooltip.refresh(useSharedTooltip ? points : hoverPoint, e);\n }\n });\n // Update positions (regardless of kdpoint or hoverPoint)\n }\n else if (followPointer && tooltip && !tooltip.isHidden) {\n var anchor = tooltip.getAnchor([{}],\n e);\n if (chart.isInsidePlot(anchor[0], anchor[1], {\n visiblePlotOnly: true\n })) {\n tooltip.updatePosition({ plotX: anchor[0], plotY: anchor[1] });\n }\n }\n // Start the event listener to pick up the tooltip and crosshairs\n if (!pointer.unDocMouseMove) {\n pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', function (e) {\n var chart = charts[Pointer.hoverChartIndex];\n if (chart) {\n chart.pointer.onDocumentMouseMove(e);\n }\n });\n pointer.eventsToUnbind.push(pointer.unDocMouseMove);\n }\n // Issues related to crosshair #4927, #5269 #5066, #5658\n chart.axes.forEach(function drawAxisCrosshair(axis) {\n var snap = pick((axis.crosshair || {}).snap,\n true);\n var point;\n if (snap) {\n point = chart.hoverPoint; // #13002\n if (!point || point.series[axis.coll] !== axis) {\n point = find(points, function (p) {\n return p.series && p.series[axis.coll] === axis;\n });\n }\n }\n // Axis has snapping crosshairs, and one of the hover points belongs\n // to axis. Always call drawCrosshair when it is not snap.\n if (point || !snap) {\n axis.drawCrosshair(e, point);\n // Axis has snapping crosshairs, but no hover point belongs to axis\n }\n else {\n axis.hideCrosshair();\n }\n });\n };\n /**\n * Scale series groups to a certain scale and translation.\n * @private\n * @function Highcharts.Pointer#scaleGroups\n */\n Pointer.prototype.scaleGroups = function (attribs, clip) {\n var chart = this.chart;\n // Scale each series\n chart.series.forEach(function (series) {\n var seriesAttribs = attribs || series.getPlotBox(); // #1701\n if (series.group &&\n ((series.xAxis && series.xAxis.zoomEnabled) ||\n chart.mapView)) {\n series.group.attr(seriesAttribs);\n if (series.markerGroup) {\n series.markerGroup.attr(seriesAttribs);\n series.markerGroup.clip(clip ? chart.clipRect : null);\n }\n if (series.dataLabelsGroup) {\n series.dataLabelsGroup.attr(seriesAttribs);\n }\n }\n });\n // Clip\n chart.clipRect.attr(clip || chart.clipBox);\n };\n /**\n * Set the JS DOM events on the container and document. This method should\n * contain a one-to-one assignment between methods and their handlers. Any\n * advanced logic should be moved to the handler reflecting the event's\n * name.\n * @private\n * @function Highcharts.Pointer#setDOMEvents\n */\n Pointer.prototype.setDOMEvents = function () {\n var _this = this;\n var container = this.chart.container,\n ownerDoc = container.ownerDocument;\n container.onmousedown = this.onContainerMouseDown.bind(this);\n container.onmousemove = this.onContainerMouseMove.bind(this);\n container.onclick = this.onContainerClick.bind(this);\n this.eventsToUnbind.push(addEvent(container, 'mouseenter', this.onContainerMouseEnter.bind(this)));\n this.eventsToUnbind.push(addEvent(container, 'mouseleave', this.onContainerMouseLeave.bind(this)));\n if (!Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = addEvent(ownerDoc, 'mouseup', this.onDocumentMouseUp.bind(this));\n }\n // In case we are dealing with overflow, reset the chart position when\n // scrolling parent elements\n var parent = this.chart.renderTo.parentElement;\n while (parent && parent.tagName !== 'BODY') {\n this.eventsToUnbind.push(addEvent(parent, 'scroll', function () {\n delete _this.chartPosition;\n }));\n parent = parent.parentElement;\n }\n if (H.hasTouch) {\n this.eventsToUnbind.push(addEvent(container, 'touchstart', this.onContainerTouchStart.bind(this), { passive: false }));\n this.eventsToUnbind.push(addEvent(container, 'touchmove', this.onContainerTouchMove.bind(this), { passive: false }));\n if (!Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', this.onDocumentTouchEnd.bind(this), { passive: false });\n }\n }\n };\n /**\n * Sets the index of the hovered chart and leaves the previous hovered\n * chart, to reset states like tooltip.\n * @private\n * @function Highcharts.Pointer#setHoverChartIndex\n */\n Pointer.prototype.setHoverChartIndex = function () {\n var chart = this.chart;\n var hoverChart = H.charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart &&\n hoverChart !== chart) {\n hoverChart.pointer.onContainerMouseLeave({ relatedTarget: chart.container });\n }\n if (!hoverChart ||\n !hoverChart.mouseIsDown) {\n Pointer.hoverChartIndex = chart.index;\n }\n };\n /**\n * General touch handler shared by touchstart and touchmove.\n * @private\n * @function Highcharts.Pointer#touch\n */\n Pointer.prototype.touch = function (e, start) {\n var chart = this.chart;\n var hasMoved,\n pinchDown,\n isInside;\n this.setHoverChartIndex();\n if (e.touches.length === 1) {\n e = this.normalize(e);\n isInside = chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop, {\n visiblePlotOnly: true\n });\n if (isInside && !chart.openMenu) {\n // Run mouse events and display tooltip etc\n if (start) {\n this.runPointActions(e);\n }\n // Android fires touchmove events after the touchstart even if\n // the finger hasn't moved, or moved only a pixel or two. In iOS\n // however, the touchmove doesn't fire unless the finger moves\n // more than ~4px. So we emulate this behaviour in Android by\n // checking how much it moved, and cancelling on small\n // distances. #3450.\n if (e.type === 'touchmove') {\n pinchDown = this.pinchDown;\n hasMoved = pinchDown[0] ? Math.sqrt(// #5266\n Math.pow(pinchDown[0].chartX - e.chartX, 2) +\n Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 4 : false;\n }\n if (pick(hasMoved, true)) {\n this.pinch(e);\n }\n }\n else if (start) {\n // Hide the tooltip on touching outside the plot area (#1203)\n this.reset();\n }\n }\n else if (e.touches.length === 2) {\n this.pinch(e);\n }\n };\n /**\n * Returns true if the chart is set up for zooming by single touch and the\n * event is capable\n * @private\n * @function Highcharts.Pointer#touchSelect\n */\n Pointer.prototype.touchSelect = function (e) {\n return Boolean(this.chart.options.chart.zooming.singleTouch &&\n e.touches &&\n e.touches.length === 1);\n };\n /**\n * Resolve the zoomType option, this is reset on all touch start and mouse\n * down events.\n * @private\n * @function Highcharts.Pointer#zoomOption\n */\n Pointer.prototype.zoomOption = function (e) {\n var chart = this.chart,\n options = chart.options.chart,\n inverted = chart.inverted;\n var zoomType = options.zooming.type || '',\n zoomX,\n zoomY;\n // Look for the pinchType option\n if (/touch/.test(e.type)) {\n zoomType = pick(options.zooming.pinchType, zoomType);\n }\n this.zoomX = zoomX = /x/.test(zoomType);\n this.zoomY = zoomY = /y/.test(zoomType);\n this.zoomHor = (zoomX && !inverted) || (zoomY && inverted);\n this.zoomVert = (zoomY && !inverted) || (zoomX && inverted);\n this.hasZoom = zoomX || zoomY;\n };\n return Pointer;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Chart position and scale.\n *\n * @interface Highcharts.ChartPositionObject\n */ /**\n * @name Highcharts.ChartPositionObject#left\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#top\n * @type {number}\n */\n /**\n * One position in relation to an axis.\n *\n * @interface Highcharts.PointerAxisCoordinateObject\n */ /**\n * Related axis.\n *\n * @name Highcharts.PointerAxisCoordinateObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value.\n *\n * @name Highcharts.PointerAxisCoordinateObject#value\n * @type {number}\n */\n /**\n * Positions in terms of axis values.\n *\n * @interface Highcharts.PointerAxisCoordinatesObject\n */ /**\n * Positions on the x-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#xAxis\n * @type {Array}\n */ /**\n * Positions on the y-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#yAxis\n * @type {Array}\n */\n /**\n * Pointer coordinates.\n *\n * @interface Highcharts.PointerCoordinatesObject\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartX\n * @type {number}\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartY\n * @type {number}\n */\n /**\n * A native browser mouse or touch event, extended with position information\n * relative to the {@link Chart.container}.\n *\n * @interface Highcharts.PointerEventObject\n * @extends global.PointerEvent\n */ /**\n * The X coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartX\n * @type {number}\n */ /**\n * The Y coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartY\n * @type {number}\n */\n /**\n * Axis-specific data of a selection.\n *\n * @interface Highcharts.SelectDataObject\n */ /**\n * The selected Axis.\n * @name Highcharts.SelectDataObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The maximum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#min\n * @type {number}\n */\n /**\n * Object for select events.\n * The primary axes are `xAxis[0]` and `yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.SelectEventObject\n */ /**\n * The related browser event.\n * @name Highcharts.SelectEventObject#originalEvent\n * @type {global.Event}\n */ /**\n * Indicates a reset event to restore default state.\n * @name Highcharts.SelectEventObject#resetSelection\n * @type {boolean|undefined}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#xAxis\n * @type {Array}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#yAxis\n * @type {Array}\n */\n ''; // keeps doclets above in JS file\n\n return Pointer;\n });\n _registerModule(_modules, 'Core/MSPointer.js', [_modules['Core/Globals.js'], _modules['Core/Pointer.js'], _modules['Core/Utilities.js']], function (H, Pointer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var charts = H.charts,\n doc = H.doc,\n noop = H.noop,\n win = H.win;\n var addEvent = U.addEvent,\n css = U.css,\n objectEach = U.objectEach,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Constants\n *\n * */\n // The touches object keeps track of the points being touched at all times\n var touches = {};\n var hasPointerEvent = !!win.PointerEvent;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function getWebkitTouches() {\n var fake = [];\n fake.item = function (i) {\n return this[i];\n };\n objectEach(touches, function (touch) {\n fake.push({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target\n });\n });\n return fake;\n }\n /** @private */\n function translateMSPointer(e, method, wktype, func) {\n var chart = charts[Pointer.hoverChartIndex || NaN];\n if ((e.pointerType === 'touch' ||\n e.pointerType === e.MSPOINTER_TYPE_TOUCH) && chart) {\n var p = chart.pointer;\n func(e);\n p[method]({\n type: wktype,\n target: e.currentTarget,\n preventDefault: noop,\n touches: getWebkitTouches()\n });\n }\n }\n /* *\n *\n * Class\n *\n * */\n /** @private */\n var MSPointer = /** @class */ (function (_super) {\n __extends(MSPointer, _super);\n function MSPointer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n MSPointer.isRequired = function () {\n return !!(!H.hasTouch && (win.PointerEvent || win.MSPointerEvent));\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add or remove the MS Pointer specific events\n * @private\n * @function Highcharts.Pointer#batchMSEvents\n */\n MSPointer.prototype.batchMSEvents = function (fn) {\n fn(this.chart.container, hasPointerEvent ? 'pointerdown' : 'MSPointerDown', this.onContainerPointerDown);\n fn(this.chart.container, hasPointerEvent ? 'pointermove' : 'MSPointerMove', this.onContainerPointerMove);\n fn(doc, hasPointerEvent ? 'pointerup' : 'MSPointerUp', this.onDocumentPointerUp);\n };\n // Destroy MS events also\n MSPointer.prototype.destroy = function () {\n this.batchMSEvents(removeEvent);\n _super.prototype.destroy.call(this);\n };\n // Disable default IE actions for pinch and such on chart element\n MSPointer.prototype.init = function (chart, options) {\n _super.prototype.init.call(this, chart, options);\n if (this.hasZoom) { // #4014\n css(chart.container, {\n '-ms-touch-action': 'none',\n 'touch-action': 'none'\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerDown\n */\n MSPointer.prototype.onContainerPointerDown = function (e) {\n translateMSPointer(e, 'onContainerTouchStart', 'touchstart', function (e) {\n touches[e.pointerId] = {\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.currentTarget\n };\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerMove\n */\n MSPointer.prototype.onContainerPointerMove = function (e) {\n translateMSPointer(e, 'onContainerTouchMove', 'touchmove', function (e) {\n touches[e.pointerId] = ({ pageX: e.pageX, pageY: e.pageY });\n if (!touches[e.pointerId].target) {\n touches[e.pointerId].target = e.currentTarget;\n }\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentPointerUp\n */\n MSPointer.prototype.onDocumentPointerUp = function (e) {\n translateMSPointer(e, 'onDocumentTouchEnd', 'touchend', function (e) {\n delete touches[e.pointerId];\n });\n };\n // Add IE specific touch events to chart\n MSPointer.prototype.setDOMEvents = function () {\n var tooltip = this.chart.tooltip;\n _super.prototype.setDOMEvents.call(this);\n if (this.hasZoom ||\n pick((tooltip && tooltip.options.followTouchMove), true)) {\n this.batchMSEvents(addEvent);\n }\n };\n return MSPointer;\n }(Pointer));\n /* *\n *\n * Default Export\n *\n * */\n\n return MSPointer;\n });\n _registerModule(_modules, 'Core/Legend/Legend.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Series/Point.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Utilities.js']], function (A, F, H, Point, R, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var format = F.format;\n var isFirefox = H.isFirefox,\n marginNames = H.marginNames,\n win = H.win;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength,\n stableSort = U.stableSort,\n syncTimeout = U.syncTimeout,\n wrap = U.wrap;\n /* *\n *\n * Class\n *\n * */\n /**\n * The overview of the chart's series. The legend object is instanciated\n * internally in the chart constructor, and is available from the `chart.legend`\n * property. Each chart has only one legend.\n *\n * @class\n * @name Highcharts.Legend\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n var Legend = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Legend(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allItems = [];\n this.box = void 0;\n this.contentGroup = void 0;\n this.display = false;\n this.group = void 0;\n this.initialItemY = 0;\n this.itemHeight = 0;\n this.itemMarginBottom = 0;\n this.itemMarginTop = 0;\n this.itemX = 0;\n this.itemY = 0;\n this.lastItemY = 0;\n this.lastLineHeight = 0;\n this.legendHeight = 0;\n this.legendWidth = 0;\n this.maxItemWidth = 0;\n this.maxLegendWidth = 0;\n this.offsetWidth = 0;\n this.options = void 0;\n this.padding = 0;\n this.pages = [];\n this.proximate = false;\n this.scrollGroup = void 0;\n this.symbolHeight = 0;\n this.symbolWidth = 0;\n this.titleHeight = 0;\n this.totalItemWidth = 0;\n this.widthOption = 0;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Initialize the legend.\n *\n * @private\n * @function Highcharts.Legend#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n Legend.prototype.init = function (chart, options) {\n /**\n * Chart of this legend.\n *\n * @readonly\n * @name Highcharts.Legend#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n this.setOptions(options);\n if (options.enabled) {\n // Render it\n this.render();\n // move checkboxes\n addEvent(this.chart, 'endResize', function () {\n this.legend.positionCheckboxes();\n });\n if (this.proximate) {\n this.unchartrender = addEvent(this.chart, 'render', function () {\n this.legend.proximatePositions();\n this.legend.positionItems();\n });\n }\n else if (this.unchartrender) {\n this.unchartrender();\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setOptions\n * @param {Highcharts.LegendOptions} options\n */\n Legend.prototype.setOptions = function (options) {\n var padding = pick(options.padding, 8);\n /**\n * Legend options.\n *\n * @readonly\n * @name Highcharts.Legend#options\n * @type {Highcharts.LegendOptions}\n */\n this.options = options;\n if (!this.chart.styledMode) {\n this.itemStyle = options.itemStyle;\n this.itemHiddenStyle = merge(this.itemStyle, options.itemHiddenStyle);\n }\n this.itemMarginTop = options.itemMarginTop || 0;\n this.itemMarginBottom = options.itemMarginBottom || 0;\n this.padding = padding;\n this.initialItemY = padding - 5; // 5 is pixels above the text\n this.symbolWidth = pick(options.symbolWidth, 16);\n this.pages = [];\n this.proximate = options.layout === 'proximate' && !this.chart.inverted;\n // #12705: baseline has to be reset on every update\n this.baseline = void 0;\n };\n /**\n * Update the legend with new options. Equivalent to running `chart.update`\n * with a legend configuration option.\n *\n * @sample highcharts/legend/legend-update/\n * Legend update\n *\n * @function Highcharts.Legend#update\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after. Whether to redraw the chart.\n *\n * @emits Highcharts.Legends#event:afterUpdate\n */\n Legend.prototype.update = function (options, redraw) {\n var chart = this.chart;\n this.setOptions(merge(true, this.options, options));\n this.destroy();\n chart.isDirtyLegend = chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n fireEvent(this, 'afterUpdate');\n };\n /**\n * Set the colors for the legend item.\n *\n * @private\n * @function Highcharts.Legend#colorizeItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * A Series or Point instance\n * @param {boolean} [visible=false]\n * Dimmed or colored\n *\n * @todo\n * Make events official: Fires the event `afterColorizeItem`.\n */\n Legend.prototype.colorizeItem = function (item, visible) {\n var _a = item.legendItem || {},\n group = _a.group,\n label = _a.label,\n line = _a.line,\n symbol = _a.symbol;\n if (group) {\n group[visible ? 'removeClass' : 'addClass']('highcharts-legend-item-hidden');\n }\n if (!this.chart.styledMode) {\n var legend = this,\n options = legend.options,\n hiddenColor = legend.itemHiddenStyle.color,\n textColor = visible ?\n options.itemStyle.color :\n hiddenColor,\n symbolColor = visible ?\n (item.color || hiddenColor) :\n hiddenColor,\n markerOptions = item.options && item.options.marker;\n var symbolAttr = { fill: symbolColor };\n if (label) {\n label.css({\n fill: textColor,\n color: textColor // #1553, oldIE\n });\n }\n if (line) {\n line.attr({ stroke: symbolColor });\n }\n if (symbol) {\n // Apply marker options\n if (markerOptions && symbol.isMarker) { // #585\n symbolAttr = item.pointAttribs();\n if (!visible) {\n // #6769\n symbolAttr.stroke = symbolAttr.fill = hiddenColor;\n }\n }\n symbol.attr(symbolAttr);\n }\n }\n fireEvent(this, 'afterColorizeItem', { item: item, visible: visible });\n };\n /**\n * @private\n * @function Highcharts.Legend#positionItems\n */\n Legend.prototype.positionItems = function () {\n // Now that the legend width and height are established, put the items\n // in the final position\n this.allItems.forEach(this.positionItem, this);\n if (!this.chart.isResizing) {\n this.positionCheckboxes();\n }\n };\n /**\n * Position the legend item.\n *\n * @private\n * @function Highcharts.Legend#positionItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to position\n */\n Legend.prototype.positionItem = function (item) {\n var _this = this;\n var legend = this,\n _a = item.legendItem || {},\n group = _a.group,\n _b = _a.x,\n x = _b === void 0 ? 0 : _b,\n _c = _a.y,\n y = _c === void 0 ? 0 : _c,\n options = legend.options,\n symbolPadding = options.symbolPadding,\n ltr = !options.rtl,\n checkbox = item.checkbox;\n if (group && group.element) {\n var attribs = {\n translateX: ltr ?\n x :\n legend.legendWidth - x - 2 * symbolPadding - 4,\n translateY: y\n };\n var complete = function () {\n fireEvent(_this, 'afterPositionItem', { item: item });\n };\n group[defined(group.translateY) ? 'animate' : 'attr'](attribs, void 0, complete);\n }\n if (checkbox) {\n checkbox.x = x;\n checkbox.y = y;\n }\n };\n /**\n * Destroy a single legend item, used internally on removing series items.\n *\n * @private\n * @function Highcharts.Legend#destroyItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to remove\n */\n Legend.prototype.destroyItem = function (item) {\n var checkbox = item.checkbox,\n legendItem = item.legendItem || {};\n // destroy SVG elements\n for (var _i = 0, _a = ['group', 'label', 'line', 'symbol']; _i < _a.length; _i++) {\n var key = _a[_i];\n if (legendItem[key]) {\n legendItem[key] = legendItem[key].destroy();\n }\n }\n if (checkbox) {\n discardElement(checkbox);\n }\n item.legendItem = void 0;\n };\n /**\n * Destroy the legend. Used internally. To reflow objects, `chart.redraw`\n * must be called after destruction.\n *\n * @private\n * @function Highcharts.Legend#destroy\n */\n Legend.prototype.destroy = function () {\n var legend = this;\n // Destroy items\n for (var _i = 0, _a = this.getAllItems(); _i < _a.length; _i++) {\n var item = _a[_i];\n this.destroyItem(item);\n }\n // Destroy legend elements\n for (var _b = 0, _c = [\n 'clipRect',\n 'up',\n 'down',\n 'pager',\n 'nav',\n 'box',\n 'title',\n 'group'\n ]; _b < _c.length; _b++) {\n var key = _c[_b];\n if (legend[key]) {\n legend[key] = legend[key].destroy();\n }\n }\n this.display = null; // Reset in .render on update.\n };\n /**\n * Position the checkboxes after the width is determined.\n *\n * @private\n * @function Highcharts.Legend#positionCheckboxes\n */\n Legend.prototype.positionCheckboxes = function () {\n var alignAttr = this.group && this.group.alignAttr,\n clipHeight = this.clipHeight || this.legendHeight,\n titleHeight = this.titleHeight;\n var translateY;\n if (alignAttr) {\n translateY = alignAttr.translateY;\n this.allItems.forEach(function (item) {\n var checkbox = item.checkbox;\n var top;\n if (checkbox) {\n top = translateY + titleHeight + checkbox.y +\n (this.scrollOffset || 0) + 3;\n css(checkbox, {\n left: (alignAttr.translateX + item.checkboxOffset +\n checkbox.x - 20) + 'px',\n top: top + 'px',\n display: this.proximate || (top > translateY - 6 &&\n top < translateY + clipHeight - 6) ?\n '' :\n 'none'\n });\n }\n }, this);\n }\n };\n /**\n * Render the legend title on top of the legend.\n *\n * @private\n * @function Highcharts.Legend#renderTitle\n */\n Legend.prototype.renderTitle = function () {\n var options = this.options,\n padding = this.padding,\n titleOptions = options.title;\n var bBox,\n titleHeight = 0;\n if (titleOptions.text) {\n if (!this.title) {\n /**\n * SVG element of the legend title.\n *\n * @readonly\n * @name Highcharts.Legend#title\n * @type {Highcharts.SVGElement}\n */\n this.title = this.chart.renderer.label(titleOptions.text, padding - 3, padding - 4, void 0, void 0, void 0, options.useHTML, void 0, 'legend-title')\n .attr({ zIndex: 1 });\n if (!this.chart.styledMode) {\n this.title.css(titleOptions.style);\n }\n this.title.add(this.group);\n }\n // Set the max title width (#7253)\n if (!titleOptions.width) {\n this.title.css({\n width: this.maxLegendWidth + 'px'\n });\n }\n bBox = this.title.getBBox();\n titleHeight = bBox.height;\n this.offsetWidth = bBox.width; // #1717\n this.contentGroup.attr({ translateY: titleHeight });\n }\n this.titleHeight = titleHeight;\n };\n /**\n * Set the legend item text.\n *\n * @function Highcharts.Legend#setText\n * @param {Highcharts.Point|Highcharts.Series} item\n * The item for which to update the text in the legend.\n */\n Legend.prototype.setText = function (item) {\n var options = this.options;\n item.legendItem.label.attr({\n text: options.labelFormat ?\n format(options.labelFormat, item, this.chart) :\n options.labelFormatter.call(item)\n });\n };\n /**\n * Render a single specific legend item. Called internally from the `render`\n * function.\n *\n * @private\n * @function Highcharts.Legend#renderItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to render.\n */\n Legend.prototype.renderItem = function (item) {\n var legend = this,\n legendItem = item.legendItem = item.legendItem || {},\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n horizontal = options.layout === 'horizontal',\n symbolWidth = legend.symbolWidth,\n symbolPadding = options.symbolPadding || 0,\n itemStyle = legend.itemStyle,\n itemHiddenStyle = legend.itemHiddenStyle,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n ltr = !options.rtl,\n isSeries = !item.series,\n series = !isSeries && item.series.drawLegendSymbol ?\n item.series :\n item,\n seriesOptions = series.options,\n showCheckbox = (legend.createCheckboxForItem) &&\n seriesOptions &&\n seriesOptions.showCheckbox,\n useHTML = options.useHTML,\n itemClassName = item.options.className;\n var label = legendItem.label, \n // full width minus text width\n itemExtraWidth = symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (!label) { // generate it once, later move it\n // Generate the group box, a group to hold the symbol and text. Text\n // is to be appended in Legend class.\n legendItem.group = renderer\n .g('legend-item')\n .addClass('highcharts-' + series.type + '-series ' +\n 'highcharts-color-' + item.colorIndex +\n (itemClassName ? ' ' + itemClassName : '') +\n (isSeries ?\n ' highcharts-series-' + item.index :\n ''))\n .attr({ zIndex: 1 })\n .add(legend.scrollGroup);\n // Generate the list item text and add it to the group\n legendItem.label = label = renderer.text('', ltr ?\n symbolWidth + symbolPadding :\n -symbolPadding, legend.baseline || 0, useHTML);\n if (!chart.styledMode) {\n // merge to prevent modifying original (#1021)\n label.css(merge(item.visible ?\n itemStyle :\n itemHiddenStyle));\n }\n label\n .attr({\n align: ltr ? 'left' : 'right',\n zIndex: 2\n })\n .add(legendItem.group);\n // Get the baseline for the first item - the font size is equal for\n // all\n if (!legend.baseline) {\n legend.fontMetrics = renderer.fontMetrics(chart.styledMode ? 12 : itemStyle.fontSize, label);\n legend.baseline =\n legend.fontMetrics.f + 3 + legend.itemMarginTop;\n label.attr('y', legend.baseline);\n legend.symbolHeight =\n options.symbolHeight || legend.fontMetrics.f;\n if (options.squareSymbol) {\n legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));\n itemExtraWidth = legend.symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (ltr) {\n label.attr('x', legend.symbolWidth + symbolPadding);\n }\n }\n }\n // Draw the legend symbol inside the group box\n series.drawLegendSymbol(legend, item);\n if (legend.setItemEvents) {\n legend.setItemEvents(item, label, useHTML);\n }\n }\n // Add the HTML checkbox on top\n if (showCheckbox && !item.checkbox && legend.createCheckboxForItem) {\n legend.createCheckboxForItem(item);\n }\n // Colorize the items\n legend.colorizeItem(item, item.visible);\n // Take care of max width and text overflow (#6659)\n if (chart.styledMode || !itemStyle.width) {\n label.css({\n width: ((options.itemWidth ||\n legend.widthOption ||\n chart.spacingBox.width) - itemExtraWidth) + 'px'\n });\n }\n // Always update the text\n legend.setText(item);\n // calculate the positions for the next line\n var bBox = label.getBBox();\n var fontMetricsH = (legend.fontMetrics && legend.fontMetrics.h) || 0;\n item.itemWidth = item.checkboxOffset =\n options.itemWidth ||\n legendItem.labelWidth ||\n bBox.width + itemExtraWidth;\n legend.maxItemWidth = Math.max(legend.maxItemWidth, item.itemWidth);\n legend.totalItemWidth += item.itemWidth;\n legend.itemHeight = item.itemHeight = Math.round(legendItem.labelHeight ||\n // use bBox for multiline (#16398)\n (bBox.height > fontMetricsH * 1.5 ? bBox.height : fontMetricsH));\n };\n /**\n * Get the position of the item in the layout. We now know the\n * maxItemWidth from the previous loop.\n *\n * @private\n * @function Highcharts.Legend#layoutItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n */\n Legend.prototype.layoutItem = function (item) {\n var options = this.options,\n padding = this.padding,\n horizontal = options.layout === 'horizontal',\n itemHeight = item.itemHeight,\n itemMarginBottom = this.itemMarginBottom,\n itemMarginTop = this.itemMarginTop,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n maxLegendWidth = this.maxLegendWidth,\n itemWidth = (options.alignColumns &&\n this.totalItemWidth > maxLegendWidth) ?\n this.maxItemWidth :\n item.itemWidth,\n legendItem = item.legendItem || {};\n // If the item exceeds the width, start a new line\n if (horizontal &&\n this.itemX - padding + itemWidth > maxLegendWidth) {\n this.itemX = padding;\n if (this.lastLineHeight) { // Not for the first line (#10167)\n this.itemY += (itemMarginTop +\n this.lastLineHeight +\n itemMarginBottom);\n }\n this.lastLineHeight = 0; // reset for next line (#915, #3976)\n }\n // Set the edge positions\n this.lastItemY = itemMarginTop + this.itemY + itemMarginBottom;\n this.lastLineHeight = Math.max(// #915\n itemHeight, this.lastLineHeight);\n // cache the position of the newly generated or reordered items\n legendItem.x = this.itemX;\n legendItem.y = this.itemY;\n // advance\n if (horizontal) {\n this.itemX += itemWidth;\n }\n else {\n this.itemY +=\n itemMarginTop + itemHeight + itemMarginBottom;\n this.lastLineHeight = itemHeight;\n }\n // the width of the widest item\n this.offsetWidth = this.widthOption || Math.max((horizontal ? this.itemX - padding - (item.checkbox ?\n // decrease by itemDistance only when no checkbox #4853\n 0 :\n itemDistance) : itemWidth) + padding, this.offsetWidth);\n };\n /**\n * Get all items, which is one item per series for most series and one\n * item per point for pie series and its derivatives. Fires the event\n * `afterGetAllItems`.\n *\n * @private\n * @function Highcharts.Legend#getAllItems\n * @return {Array<(Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series)>}\n * The current items in the legend.\n * @emits Highcharts.Legend#event:afterGetAllItems\n */\n Legend.prototype.getAllItems = function () {\n var allItems = [];\n this.chart.series.forEach(function (series) {\n var seriesOptions = series && series.options;\n // Handle showInLegend. If the series is linked to another series,\n // defaults to false.\n if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {\n // Use points or series for the legend item depending on\n // legendType\n allItems = allItems.concat((series.legendItem || {}).labels ||\n (seriesOptions.legendType === 'point' ?\n series.data :\n series));\n }\n });\n fireEvent(this, 'afterGetAllItems', { allItems: allItems });\n return allItems;\n };\n /**\n * Get a short, three letter string reflecting the alignment and layout.\n *\n * @private\n * @function Highcharts.Legend#getAlignment\n * @return {string}\n * The alignment, empty string if floating\n */\n Legend.prototype.getAlignment = function () {\n var options = this.options;\n // Use the first letter of each alignment option in order to detect\n // the side. (#4189 - use charAt(x) notation instead of [x] for IE7)\n if (this.proximate) {\n return options.align.charAt(0) + 'tv';\n }\n return options.floating ? '' : (options.align.charAt(0) +\n options.verticalAlign.charAt(0) +\n options.layout.charAt(0));\n };\n /**\n * Adjust the chart margins by reserving space for the legend on only one\n * side of the chart. If the position is set to a corner, top or bottom is\n * reserved for horizontal legends and left or right for vertical ones.\n *\n * @private\n * @function Highcharts.Legend#adjustMargins\n * @param {Array} margin\n * @param {Array} spacing\n */\n Legend.prototype.adjustMargins = function (margin, spacing) {\n var chart = this.chart,\n options = this.options,\n alignment = this.getAlignment();\n if (alignment) {\n ([\n /(lth|ct|rth)/,\n /(rtv|rm|rbv)/,\n /(rbh|cb|lbh)/,\n /(lbv|lm|ltv)/\n ]).forEach(function (alignments, side) {\n if (alignments.test(alignment) && !defined(margin[side])) {\n // Now we have detected on which side of the chart we should\n // reserve space for the legend\n chart[marginNames[side]] = Math.max(chart[marginNames[side]], (chart.legend[(side + 1) % 2 ? 'legendHeight' : 'legendWidth'] +\n [1, -1, -1, 1][side] * options[(side % 2) ? 'x' : 'y'] +\n pick(options.margin, 12) +\n spacing[side] +\n (chart.titleOffset[side] || 0)));\n }\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#proximatePositions\n */\n Legend.prototype.proximatePositions = function () {\n var chart = this.chart,\n boxes = [],\n alignLeft = this.options.align === 'left';\n this.allItems.forEach(function (item) {\n var lastPoint,\n height,\n useFirstPoint = alignLeft,\n target,\n top;\n if (item.yAxis) {\n if (item.xAxis.options.reversed) {\n useFirstPoint = !useFirstPoint;\n }\n if (item.points) {\n lastPoint = find(useFirstPoint ?\n item.points :\n item.points.slice(0).reverse(), function (item) {\n return isNumber(item.plotY);\n });\n }\n height = this.itemMarginTop +\n item.legendItem.label.getBBox().height +\n this.itemMarginBottom;\n top = item.yAxis.top - chart.plotTop;\n if (item.visible) {\n target = lastPoint ?\n lastPoint.plotY :\n item.yAxis.height;\n target += top - 0.3 * height;\n }\n else {\n target = top + item.yAxis.height;\n }\n boxes.push({\n target: target,\n size: height,\n item: item\n });\n }\n }, this);\n var legendItem;\n for (var _i = 0, _a = distribute(boxes, chart.plotHeight); _i < _a.length; _i++) {\n var box = _a[_i];\n legendItem = box.item.legendItem || {};\n if (isNumber(box.pos)) {\n legendItem.y = chart.plotTop - chart.spacing[0] + box.pos;\n }\n }\n };\n /**\n * Render the legend. This method can be called both before and after\n * `chart.render`. If called after, it will only rearrange items instead\n * of creating new ones. Called internally on initial render and after\n * redraws.\n *\n * @private\n * @function Highcharts.Legend#render\n */\n Legend.prototype.render = function () {\n var legend = this,\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n padding = legend.padding, \n // add each series or point\n allItems = legend.getAllItems();\n var display,\n legendWidth,\n legendHeight,\n legendGroup = legend.group,\n allowedWidth,\n box = legend.box;\n legend.itemX = padding;\n legend.itemY = legend.initialItemY;\n legend.offsetWidth = 0;\n legend.lastItemY = 0;\n legend.widthOption = relativeLength(options.width, chart.spacingBox.width - padding);\n // Compute how wide the legend is allowed to be\n allowedWidth = chart.spacingBox.width - 2 * padding - options.x;\n if (['rm', 'lm'].indexOf(legend.getAlignment().substring(0, 2)) > -1) {\n allowedWidth /= 2;\n }\n legend.maxLegendWidth = legend.widthOption || allowedWidth;\n if (!legendGroup) {\n /**\n * SVG group of the legend.\n *\n * @readonly\n * @name Highcharts.Legend#group\n * @type {Highcharts.SVGElement}\n */\n legend.group = legendGroup = renderer\n .g('legend')\n .addClass(options.className || '')\n .attr({ zIndex: 7 })\n .add();\n legend.contentGroup = renderer\n .g()\n .attr({ zIndex: 1 }) // above background\n .add(legendGroup);\n legend.scrollGroup = renderer\n .g()\n .add(legend.contentGroup);\n }\n legend.renderTitle();\n // sort by legendIndex\n stableSort(allItems, function (a, b) {\n return ((a.options && a.options.legendIndex) || 0) -\n ((b.options && b.options.legendIndex) || 0);\n });\n // reversed legend\n if (options.reversed) {\n allItems.reverse();\n }\n /**\n * All items for the legend, which is an array of series for most series\n * and an array of points for pie series and its derivatives.\n *\n * @readonly\n * @name Highcharts.Legend#allItems\n * @type {Array<(Highcharts.Point|Highcharts.Series)>}\n */\n legend.allItems = allItems;\n legend.display = display = !!allItems.length;\n // Render the items. First we run a loop to set the text and properties\n // and read all the bounding boxes. The next loop computes the item\n // positions based on the bounding boxes.\n legend.lastLineHeight = 0;\n legend.maxItemWidth = 0;\n legend.totalItemWidth = 0;\n legend.itemHeight = 0;\n allItems.forEach(legend.renderItem, legend);\n allItems.forEach(legend.layoutItem, legend);\n // Get the box\n legendWidth = (legend.widthOption || legend.offsetWidth) + padding;\n legendHeight = legend.lastItemY + legend.lastLineHeight +\n legend.titleHeight;\n legendHeight = legend.handleOverflow(legendHeight);\n legendHeight += padding;\n // Draw the border and/or background\n if (!box) {\n /**\n * SVG element of the legend box.\n *\n * @readonly\n * @name Highcharts.Legend#box\n * @type {Highcharts.SVGElement}\n */\n legend.box = box = renderer.rect()\n .addClass('highcharts-legend-box')\n .attr({\n r: options.borderRadius\n })\n .add(legendGroup);\n }\n // Presentational\n if (!chart.styledMode) {\n box\n .attr({\n stroke: options.borderColor,\n 'stroke-width': options.borderWidth || 0,\n fill: options.backgroundColor || 'none'\n })\n .shadow(options.shadow);\n }\n if (legendWidth > 0 && legendHeight > 0) {\n box[box.placed ? 'animate' : 'attr'](box.crisp.call({}, {\n x: 0,\n y: 0,\n width: legendWidth,\n height: legendHeight\n }, box.strokeWidth()));\n }\n // hide the border if no items\n legendGroup[display ? 'show' : 'hide']();\n // Open for responsiveness\n if (chart.styledMode && legendGroup.getStyle('display') === 'none') {\n legendWidth = legendHeight = 0;\n }\n legend.legendWidth = legendWidth;\n legend.legendHeight = legendHeight;\n if (display) {\n legend.align();\n }\n if (!this.proximate) {\n this.positionItems();\n }\n fireEvent(this, 'afterRender');\n };\n /**\n * Align the legend to chart's box.\n *\n * @private\n * @function Highcharts.align\n * @param {Highcharts.BBoxObject} alignTo\n */\n Legend.prototype.align = function (alignTo) {\n if (alignTo === void 0) { alignTo = this.chart.spacingBox; }\n var chart = this.chart,\n options = this.options;\n // If aligning to the top and the layout is horizontal, adjust for\n // the title (#7428)\n var y = alignTo.y;\n if (/(lth|ct|rth)/.test(this.getAlignment()) &&\n chart.titleOffset[0] > 0) {\n y += chart.titleOffset[0];\n }\n else if (/(lbh|cb|rbh)/.test(this.getAlignment()) &&\n chart.titleOffset[2] > 0) {\n y -= chart.titleOffset[2];\n }\n if (y !== alignTo.y) {\n alignTo = merge(alignTo, { y: y });\n }\n if (!chart.hasRendered) {\n // Avoid animation when adjusting alignment for responsiveness and\n // colorAxis label layout\n this.group.placed = false;\n }\n this.group.align(merge(options, {\n width: this.legendWidth,\n height: this.legendHeight,\n verticalAlign: this.proximate ? 'top' : options.verticalAlign\n }), true, alignTo);\n };\n /**\n * Set up the overflow handling by adding navigation with up and down arrows\n * below the legend.\n *\n * @private\n * @function Highcharts.Legend#handleOverflow\n */\n Legend.prototype.handleOverflow = function (legendHeight) {\n var legend = this,\n chart = this.chart,\n renderer = chart.renderer,\n options = this.options,\n optionsY = options.y,\n alignTop = options.verticalAlign === 'top',\n padding = this.padding,\n maxHeight = options.maxHeight,\n navOptions = options.navigation,\n animation = pick(navOptions.animation,\n true),\n arrowSize = navOptions.arrowSize || 12,\n pages = this.pages,\n allItems = this.allItems,\n clipToHeight = function (height) {\n if (typeof height === 'number') {\n clipRect.attr({\n height: height\n });\n }\n else if (clipRect) { // Reset (#5912)\n legend.clipRect = clipRect.destroy();\n legend.contentGroup.clip();\n }\n // useHTML\n if (legend.contentGroup.div) {\n legend.contentGroup.div.style.clip = height ?\n 'rect(' + padding + 'px,9999px,' +\n (padding + height) + 'px,0)' :\n 'auto';\n }\n }, addTracker = function (key) {\n legend[key] = renderer\n .circle(0, 0, arrowSize * 1.3)\n .translate(arrowSize / 2, arrowSize / 2)\n .add(nav);\n if (!chart.styledMode) {\n legend[key].attr('fill', 'rgba(0,0,0,0.0001)');\n }\n return legend[key];\n };\n var clipHeight,\n lastY,\n legendItem,\n spaceHeight = (chart.spacingBox.height +\n (alignTop ? -optionsY : optionsY) - padding),\n nav = this.nav,\n clipRect = this.clipRect;\n // Adjust the height\n if (options.layout === 'horizontal' &&\n options.verticalAlign !== 'middle' &&\n !options.floating) {\n spaceHeight /= 2;\n }\n if (maxHeight) {\n spaceHeight = Math.min(spaceHeight, maxHeight);\n }\n // Reset the legend height and adjust the clipping rectangle\n pages.length = 0;\n if (legendHeight &&\n spaceHeight > 0 &&\n legendHeight > spaceHeight &&\n navOptions.enabled !== false) {\n this.clipHeight = clipHeight =\n Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);\n this.currentPage = pick(this.currentPage, 1);\n this.fullHeight = legendHeight;\n // Fill pages with Y positions so that the top of each a legend item\n // defines the scroll top for each page (#2098)\n allItems.forEach(function (item, i) {\n legendItem = item.legendItem || {};\n var y = legendItem.y || 0,\n h = Math.round(legendItem.label.getBBox().height);\n var len = pages.length;\n if (!len || (y - pages[len - 1] > clipHeight &&\n (lastY || y) !== pages[len - 1])) {\n pages.push(lastY || y);\n len++;\n }\n // Keep track of which page each item is on\n legendItem.pageIx = len - 1;\n if (lastY) {\n (allItems[i - 1].legendItem || {}).pageIx = len - 1;\n }\n // add the last page if needed (#2617, #13683)\n if (\n // check the last item\n i === allItems.length - 1 &&\n // if adding next page is needed\n y + h - pages[len - 1] > clipHeight &&\n // and will fully fit inside a new page\n h <= clipHeight) {\n pages.push(y);\n legendItem.pageIx = len;\n }\n if (y !== lastY) {\n lastY = y;\n }\n });\n // Only apply clipping if needed. Clipping causes blurred legend in\n // PDF export (#1787)\n if (!clipRect) {\n clipRect = legend.clipRect =\n renderer.clipRect(0, padding, 9999, 0);\n legend.contentGroup.clip(clipRect);\n }\n clipToHeight(clipHeight);\n // Add navigation elements\n if (!nav) {\n this.nav = nav = renderer.g()\n .attr({ zIndex: 1 })\n .add(this.group);\n this.up = renderer\n .symbol('triangle', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('upTracker')\n .on('click', function () {\n legend.scroll(-1, animation);\n });\n this.pager = renderer.text('', 15, 10)\n .addClass('highcharts-legend-navigation');\n if (!chart.styledMode && navOptions.style) {\n this.pager.css(navOptions.style);\n }\n this.pager.add(nav);\n this.down = renderer\n .symbol('triangle-down', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('downTracker')\n .on('click', function () {\n legend.scroll(1, animation);\n });\n }\n // Set initial position\n legend.scroll(0);\n legendHeight = spaceHeight;\n // Reset\n }\n else if (nav) {\n clipToHeight();\n this.nav = nav.destroy(); // #6322\n this.scrollGroup.attr({\n translateY: 1\n });\n this.clipHeight = 0; // #1379\n }\n return legendHeight;\n };\n /**\n * Scroll the legend by a number of pages.\n *\n * @private\n * @function Highcharts.Legend#scroll\n *\n * @param {number} scrollBy\n * The number of pages to scroll.\n *\n * @param {boolean|Partial} [animation]\n * Whether and how to apply animation.\n *\n */\n Legend.prototype.scroll = function (scrollBy, animation) {\n var _this = this;\n var chart = this.chart,\n pages = this.pages,\n pageCount = pages.length,\n clipHeight = this.clipHeight,\n navOptions = this.options.navigation,\n pager = this.pager,\n padding = this.padding;\n var currentPage = this.currentPage + scrollBy;\n // When resizing while looking at the last page\n if (currentPage > pageCount) {\n currentPage = pageCount;\n }\n if (currentPage > 0) {\n if (typeof animation !== 'undefined') {\n setAnimation(animation, chart);\n }\n this.nav.attr({\n translateX: padding,\n translateY: clipHeight + this.padding + 7 + this.titleHeight,\n visibility: 'inherit'\n });\n [this.up, this.upTracker].forEach(function (elem) {\n elem.attr({\n 'class': currentPage === 1 ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n });\n pager.attr({\n text: currentPage + '/' + pageCount\n });\n [this.down, this.downTracker].forEach(function (elem) {\n elem.attr({\n // adjust to text width\n x: 18 + this.pager.getBBox().width,\n 'class': currentPage === pageCount ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n }, this);\n if (!chart.styledMode) {\n this.up\n .attr({\n fill: currentPage === 1 ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.upTracker\n .css({\n cursor: currentPage === 1 ? 'default' : 'pointer'\n });\n this.down\n .attr({\n fill: currentPage === pageCount ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.downTracker\n .css({\n cursor: currentPage === pageCount ?\n 'default' :\n 'pointer'\n });\n }\n this.scrollOffset = -pages[currentPage - 1] + this.initialItemY;\n this.scrollGroup.animate({\n translateY: this.scrollOffset\n });\n this.currentPage = currentPage;\n this.positionCheckboxes();\n // Fire event after scroll animation is complete\n var animOptions = animObject(pick(animation,\n chart.renderer.globalAnimation,\n true));\n syncTimeout(function () {\n fireEvent(_this, 'afterScroll', { currentPage: currentPage });\n }, animOptions.duration);\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setItemEvents\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @param {Highcharts.SVGElement} legendLabel\n * @param {boolean} [useHTML=false]\n * @emits Highcharts.Point#event:legendItemClick\n * @emits Highcharts.Series#event:legendItemClick\n */\n Legend.prototype.setItemEvents = function (item, legendLabel, useHTML) {\n var legend = this,\n legendItem = item.legendItem || {},\n boxWrapper = legend.chart.renderer.boxWrapper,\n isPoint = item instanceof Point,\n activeClass = 'highcharts-legend-' +\n (isPoint ? 'point' : 'series') + '-active',\n styledMode = legend.chart.styledMode, \n // When `useHTML`, the symbol is rendered in other group, so\n // we need to apply events listeners to both places\n legendElements = useHTML ?\n [legendLabel,\n legendItem.symbol] :\n [legendItem.group];\n var setOtherItemsState = function (state) {\n legend.allItems.forEach(function (otherItem) {\n if (item !== otherItem) {\n [otherItem]\n .concat(otherItem.linkedSeries || [])\n .forEach(function (otherItem) {\n otherItem.setState(state, !isPoint);\n });\n }\n });\n };\n // Set the events on the item group, or in case of useHTML, the item\n // itself (#1249)\n for (var _i = 0, legendElements_1 = legendElements; _i < legendElements_1.length; _i++) {\n var element = legendElements_1[_i];\n if (element) {\n element\n .on('mouseover', function () {\n if (item.visible) {\n setOtherItemsState('inactive');\n }\n item.setState('hover');\n // A CSS class to dim or hide other than the hovered\n // series.\n // Works only if hovered series is visible (#10071).\n if (item.visible) {\n boxWrapper.addClass(activeClass);\n }\n if (!styledMode) {\n legendLabel.css(legend.options.itemHoverStyle);\n }\n })\n .on('mouseout', function () {\n if (!legend.chart.styledMode) {\n legendLabel.css(merge(item.visible ?\n legend.itemStyle :\n legend.itemHiddenStyle));\n }\n setOtherItemsState('');\n // A CSS class to dim or hide other than the hovered\n // series.\n boxWrapper.removeClass(activeClass);\n item.setState();\n })\n .on('click', function (event) {\n var strLegendItemClick = 'legendItemClick',\n fnLegendItemClick = function () {\n if (item.setVisible) {\n item.setVisible();\n }\n // Reset inactive state\n setOtherItemsState(item.visible ? 'inactive' : '');\n };\n // A CSS class to dim or hide other than the hovered\n // series. Event handling in iOS causes the activeClass\n // to be added prior to click in some cases (#7418).\n boxWrapper.removeClass(activeClass);\n // Pass over the click/touch event. #4.\n event = {\n browserEvent: event\n };\n // click the name or symbol\n if (item.firePointEvent) { // point\n item.firePointEvent(strLegendItemClick, event, fnLegendItemClick);\n }\n else {\n fireEvent(item, strLegendItemClick, event, fnLegendItemClick);\n }\n });\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#createCheckboxForItem\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @emits Highcharts.Series#event:checkboxClick\n */\n Legend.prototype.createCheckboxForItem = function (item) {\n var legend = this;\n item.checkbox = createElement('input', {\n type: 'checkbox',\n className: 'highcharts-legend-checkbox',\n checked: item.selected,\n defaultChecked: item.selected // required by IE7\n }, legend.options.itemCheckboxStyle, legend.chart.container);\n addEvent(item.checkbox, 'click', function (event) {\n var target = event.target;\n fireEvent(item.series || item, 'checkboxClick', {\n checked: target.checked,\n item: item\n }, function () {\n item.select();\n });\n });\n };\n return Legend;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @interface Highcharts.LegendItemObject\n */ /**\n * @name Highcharts.LegendItemObject#item\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#line\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#symbol\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * Gets fired when the legend item belonging to a point is clicked. The default\n * action is to toggle the visibility of the point. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.PointLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point on which the event occured.\n *\n * @param {Highcharts.PointLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.PointLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.PointLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the point.\n * @name Highcharts.PointLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related point.\n * @name Highcharts.PointLegendItemClickEventObject#target\n * @type {Highcharts.Point}\n */ /**\n * Event type.\n * @name Highcharts.PointLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n /**\n * Series color as used by the legend and some series types.\n * @name Highcharts.Series#color\n * @type {Highcharts.ColorType|undefined}\n */ /**\n * Legend data for the series.\n * @name Highcharts.Series#legendItem\n * @type {Highcharts.LegendItemObject|undefined}\n * @since 10.3.0\n */\n /**\n * Gets fired when the legend item belonging to a series is clicked. The default\n * action is to toggle the visibility of the series. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesLegendItemClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n (''); // keeps doclets above in JS file\n\n return Legend;\n });\n _registerModule(_modules, 'Core/Series/SeriesRegistry.js', [_modules['Core/Globals.js'], _modules['Core/Defaults.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (H, D, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var extendClass = U.extendClass,\n merge = U.merge;\n /* *\n *\n * Namespace\n *\n * */\n var SeriesRegistry;\n (function (SeriesRegistry) {\n /* *\n *\n * Properties\n *\n * */\n /**\n * @internal\n * @todo Move `Globals.seriesTypes` code to her.\n */\n SeriesRegistry.seriesTypes = H.seriesTypes;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Registers class pattern of a series.\n *\n * @private\n */\n function registerSeriesType(seriesType, SeriesClass) {\n var defaultPlotOptions = defaultOptions.plotOptions || {},\n seriesOptions = SeriesClass.defaultOptions,\n seriesProto = SeriesClass.prototype;\n seriesProto.type = seriesType;\n if (!seriesProto.pointClass) {\n seriesProto.pointClass = Point;\n }\n if (seriesOptions) {\n defaultPlotOptions[seriesType] = seriesOptions;\n }\n SeriesRegistry.seriesTypes[seriesType] = SeriesClass;\n }\n SeriesRegistry.registerSeriesType = registerSeriesType;\n /**\n * Old factory to create new series prototypes.\n *\n * @deprecated\n * @function Highcharts.seriesType\n *\n * @param {string} type\n * The series type name.\n *\n * @param {string} parent\n * The parent series type name. Use `line` to inherit from the basic\n * {@link Series} object.\n *\n * @param {Highcharts.SeriesOptionsType|Highcharts.Dictionary<*>} options\n * The additional default options that are merged with the parent's options.\n *\n * @param {Highcharts.Dictionary<*>} [props]\n * The properties (functions and primitives) to set on the new prototype.\n *\n * @param {Highcharts.Dictionary<*>} [pointProps]\n * Members for a series-specific extension of the {@link Point} prototype if\n * needed.\n *\n * @return {Highcharts.Series}\n * The newly created prototype as extended from {@link Series} or its\n * derivatives.\n */\n function seriesType(type, parent, options, seriesProto, pointProto) {\n var defaultPlotOptions = defaultOptions.plotOptions || {};\n parent = parent || '';\n // Merge the options\n defaultPlotOptions[type] = merge(defaultPlotOptions[parent], options);\n // Create the class\n registerSeriesType(type, extendClass(SeriesRegistry.seriesTypes[parent] || function () { }, seriesProto));\n SeriesRegistry.seriesTypes[type].prototype.type = type;\n // Create the point class if needed\n if (pointProto) {\n SeriesRegistry.seriesTypes[type].prototype.pointClass = extendClass(Point, pointProto);\n }\n return SeriesRegistry.seriesTypes[type];\n }\n SeriesRegistry.seriesType = seriesType;\n })(SeriesRegistry || (SeriesRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return SeriesRegistry;\n });\n _registerModule(_modules, 'Core/Chart/Chart.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/Legend.js'], _modules['Core/MSPointer.js'], _modules['Core/Pointer.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js'], _modules['Core/Renderer/HTML/AST.js']], function (A, Axis, D, FormatUtilities, Foundation, H, Legend, MSPointer, Pointer, RendererRegistry, SeriesRegistry, SVGRenderer, Time, U, AST) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n setAnimation = A.setAnimation;\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var numberFormat = FormatUtilities.numberFormat;\n var registerEventOptions = Foundation.registerEventOptions;\n var charts = H.charts,\n doc = H.doc,\n marginNames = H.marginNames,\n svg = H.svg,\n win = H.win;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n attr = U.attr,\n cleanRecursively = U.cleanRecursively,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Chart class. The recommended constructor is {@link Highcharts#chart}.\n *\n * @example\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * })\n *\n * @class\n * @name Highcharts.Chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images\n * are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n */\n var Chart = /** @class */ (function () {\n function Chart(a, b, c) {\n this.axes = void 0;\n this.axisOffset = void 0;\n this.bounds = void 0;\n this.chartHeight = void 0;\n this.chartWidth = void 0;\n this.clipBox = void 0;\n this.colorCounter = void 0;\n this.container = void 0;\n this.eventOptions = void 0;\n this.index = void 0;\n this.isResizing = void 0;\n this.labelCollectors = void 0;\n this.legend = void 0;\n this.margin = void 0;\n this.numberFormatter = void 0;\n this.options = void 0;\n this.plotBox = void 0;\n this.plotHeight = void 0;\n this.plotLeft = void 0;\n this.plotTop = void 0;\n this.plotWidth = void 0;\n this.pointCount = void 0;\n this.pointer = void 0;\n this.renderer = void 0;\n this.renderTo = void 0;\n this.series = void 0;\n this.sharedClips = {};\n this.spacing = void 0;\n this.spacingBox = void 0;\n this.symbolCounter = void 0;\n this.time = void 0;\n this.titleOffset = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.getArgs(a, b, c);\n }\n /**\n * Factory function for basic charts.\n *\n * @example\n * // Render a chart in to div#container\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * });\n *\n * @function Highcharts.chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images are\n * loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.Chart}\n * Returns the Chart object.\n */\n Chart.chart = function (a, b, c) {\n return new Chart(a, b, c);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Handle the arguments passed to the constructor.\n *\n * @private\n * @function Highcharts.Chart#getArgs\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.getArgs = function (a, b, c) {\n // Remove the optional first argument, renderTo, and\n // set it on this.\n if (isString(a) || a.nodeName) {\n this.renderTo = a;\n this.init(b, c);\n }\n else {\n this.init(a, b);\n }\n };\n /**\n * Overridable function that initializes the chart. The constructor's\n * arguments are passed on directly.\n *\n * @function Highcharts.Chart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.init = function (userOptions, callback) {\n // Handle regular options\n var userPlotOptions = userOptions.plotOptions || {};\n // Fire the event with a default function\n fireEvent(this, 'init', { args: arguments }, function () {\n var options = merge(defaultOptions,\n userOptions); // do the merge\n var optionsChart = options.chart;\n // Override (by copy of user options) or clear tooltip options\n // in chart.options.plotOptions (#6218)\n objectEach(options.plotOptions, function (typeOptions, type) {\n if (isObject(typeOptions)) { // #8766\n typeOptions.tooltip = (userPlotOptions[type] && // override by copy:\n merge(userPlotOptions[type].tooltip)) || void 0; // or clear\n }\n });\n // User options have higher priority than default options\n // (#6218). In case of exporting: path is changed\n options.tooltip.userOptions = (userOptions.chart &&\n userOptions.chart.forExport &&\n userOptions.tooltip.userOptions) || userOptions.tooltip;\n /**\n * The original options given to the constructor or a chart factory\n * like {@link Highcharts.chart} and {@link Highcharts.stockChart}.\n *\n * @name Highcharts.Chart#userOptions\n * @type {Highcharts.Options}\n */\n this.userOptions = userOptions;\n this.margin = [];\n this.spacing = [];\n // Pixel data bounds for touch zoom\n this.bounds = { h: {}, v: {} };\n // An array of functions that returns labels that should be\n // considered for anti-collision\n this.labelCollectors = [];\n this.callback = callback;\n this.isResizing = 0;\n var zooming = optionsChart.zooming = optionsChart.zooming || {};\n // Other options have no default so just pick\n if (userOptions.chart && !userOptions.chart.zooming) {\n zooming.resetButton = optionsChart.resetZoomButton;\n }\n zooming.key = pick(zooming.key, optionsChart.zoomKey);\n zooming.pinchType = pick(zooming.pinchType, optionsChart.pinchType);\n zooming.singleTouch = pick(zooming.singleTouch, optionsChart.zoomBySingleTouch);\n zooming.type = pick(zooming.type, optionsChart.zoomType);\n /**\n * The options structure for the chart after merging\n * {@link #defaultOptions} and {@link #userOptions}. It contains\n * members for the sub elements like series, legend, tooltip etc.\n *\n * @name Highcharts.Chart#options\n * @type {Highcharts.Options}\n */\n this.options = options;\n /**\n * All the axes in the chart.\n *\n * @see Highcharts.Chart.xAxis\n * @see Highcharts.Chart.yAxis\n *\n * @name Highcharts.Chart#axes\n * @type {Array}\n */\n this.axes = [];\n /**\n * All the current series in the chart.\n *\n * @name Highcharts.Chart#series\n * @type {Array}\n */\n this.series = [];\n /**\n * The `Time` object associated with the chart. Since v6.0.5,\n * time settings can be applied individually for each chart. If\n * no individual settings apply, the `Time` object is shared by\n * all instances.\n *\n * @name Highcharts.Chart#time\n * @type {Highcharts.Time}\n */\n this.time =\n userOptions.time && Object.keys(userOptions.time).length ?\n new Time(userOptions.time) :\n H.time;\n /**\n * Callback function to override the default function that formats\n * all the numbers in the chart. Returns a string with the formatted\n * number.\n *\n * @name Highcharts.Chart#numberFormatter\n * @type {Highcharts.NumberFormatterCallbackFunction}\n */\n this.numberFormatter = optionsChart.numberFormatter || numberFormat;\n /**\n * Whether the chart is in styled mode, meaning all presentational\n * attributes are avoided.\n *\n * @name Highcharts.Chart#styledMode\n * @type {boolean}\n */\n this.styledMode = optionsChart.styledMode;\n this.hasCartesianSeries = optionsChart.showAxes;\n var chart = this;\n /**\n * Index position of the chart in the {@link Highcharts#charts}\n * property.\n *\n * @name Highcharts.Chart#index\n * @type {number}\n * @readonly\n */\n chart.index = charts.length; // Add the chart to the global lookup\n charts.push(chart);\n H.chartCount++;\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n /**\n * A collection of the X axes in the chart.\n *\n * @name Highcharts.Chart#xAxis\n * @type {Array}\n */\n chart.xAxis = [];\n /**\n * A collection of the Y axes in the chart.\n *\n * @name Highcharts.Chart#yAxis\n * @type {Array}\n *\n * @todo\n * Make events official: Fire the event `afterInit`.\n */\n chart.yAxis = [];\n chart.pointCount = chart.colorCounter = chart.symbolCounter = 0;\n // Fire after init but before first render, before axes and series\n // have been initialized.\n fireEvent(chart, 'afterInit');\n chart.firstRender();\n });\n };\n /**\n * Internal function to unitialize an individual series.\n *\n * @private\n * @function Highcharts.Chart#initSeries\n */\n Chart.prototype.initSeries = function (options) {\n var chart = this,\n optionsChart = chart.options.chart,\n type = (options.type ||\n optionsChart.type ||\n optionsChart.defaultSeriesType),\n SeriesClass = seriesTypes[type];\n // No such series type\n if (!SeriesClass) {\n error(17, true, chart, { missingModuleFor: type });\n }\n var series = new SeriesClass();\n if (typeof series.init === 'function') {\n series.init(chart, options);\n }\n return series;\n };\n /**\n * Internal function to set data for all series with enabled sorting.\n *\n * @private\n * @function Highcharts.Chart#setSeriesData\n */\n Chart.prototype.setSeriesData = function () {\n this.getSeriesOrderByLinks().forEach(function (series) {\n // We need to set data for series with sorting after series init\n if (!series.points && !series.data && series.enabledDataSorting) {\n series.setData(series.options.data, false);\n }\n });\n };\n /**\n * Sort and return chart series in order depending on the number of linked\n * series.\n *\n * @private\n * @function Highcharts.Series#getSeriesOrderByLinks\n */\n Chart.prototype.getSeriesOrderByLinks = function () {\n return this.series.concat().sort(function (a, b) {\n if (a.linkedSeries.length || b.linkedSeries.length) {\n return b.linkedSeries.length - a.linkedSeries.length;\n }\n return 0;\n });\n };\n /**\n * Order all series above a given index. When series are added and ordered\n * by configuration, only the last series is handled (#248, #1123, #2456,\n * #6112). This function is called on series initialization and destroy.\n *\n * @private\n * @function Highcharts.Series#orderSeries\n * @param {number} [fromIndex]\n * If this is given, only the series above this index are handled.\n */\n Chart.prototype.orderSeries = function (fromIndex) {\n var series = this.series;\n for (var i = (fromIndex || 0), iEnd = series.length; i < iEnd; ++i) {\n if (series[i]) {\n /**\n * Contains the series' index in the `Chart.series` array.\n *\n * @name Highcharts.Series#index\n * @type {number}\n * @readonly\n */\n series[i].index = i;\n series[i].name = series[i].getName();\n }\n }\n };\n /**\n * Check whether a given point is within the plot area.\n *\n * @function Highcharts.Chart#isInsidePlot\n *\n * @param {number} plotX\n * Pixel x relative to the plot area.\n *\n * @param {number} plotY\n * Pixel y relative to the plot area.\n *\n * @param {Highcharts.ChartIsInsideOptionsObject} [options]\n * Options object.\n *\n * @return {boolean}\n * Returns true if the given point is inside the plot area.\n */\n Chart.prototype.isInsidePlot = function (plotX, plotY, options) {\n var _a;\n if (options === void 0) { options = {}; }\n var _b = this,\n inverted = _b.inverted,\n plotBox = _b.plotBox,\n plotLeft = _b.plotLeft,\n plotTop = _b.plotTop,\n scrollablePlotBox = _b.scrollablePlotBox;\n var scrollLeft = 0,\n scrollTop = 0;\n if (options.visiblePlotOnly && this.scrollingContainer) {\n (_a = this.scrollingContainer, scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop);\n }\n var series = options.series,\n box = (options.visiblePlotOnly && scrollablePlotBox) || plotBox,\n x = options.inverted ? plotY : plotX,\n y = options.inverted ? plotX : plotY,\n e = {\n x: x,\n y: y,\n isInsidePlot: true,\n options: options\n };\n if (!options.ignoreX) {\n var xAxis = (series &&\n (inverted && !this.polar ? series.yAxis : series.xAxis)) || {\n pos: plotLeft,\n len: Infinity\n };\n var chartX = options.paneCoordinates ?\n xAxis.pos + x : plotLeft + x;\n if (!(chartX >= Math.max(scrollLeft + plotLeft, xAxis.pos) &&\n chartX <= Math.min(scrollLeft + plotLeft + box.width, xAxis.pos + xAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n if (!options.ignoreY && e.isInsidePlot) {\n var yAxis = (options.axis && !options.axis.isXAxis && options.axis) || (series && (inverted ? series.xAxis : series.yAxis)) || {\n pos: plotTop,\n len: Infinity\n };\n var chartY = options.paneCoordinates ?\n yAxis.pos + y : plotTop + y;\n if (!(chartY >= Math.max(scrollTop + plotTop, yAxis.pos) &&\n chartY <= Math.min(scrollTop + plotTop + box.height, yAxis.pos + yAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n fireEvent(this, 'afterIsInsidePlot', e);\n return e.isInsidePlot;\n };\n /**\n * Redraw the chart after changes have been done to the data, axis extremes\n * chart size or chart elements. All methods for updating axes, series or\n * points have a parameter for redrawing the chart. This is `true` by\n * default. But in many cases you want to do more than one operation on the\n * chart before redrawing, for example add a number of points. In those\n * cases it is a waste of resources to redraw the chart for each new point\n * added. So you add the points and call `chart.redraw()` after.\n *\n * @function Highcharts.Chart#redraw\n *\n * @param {boolean|Partial} [animation]\n * If or how to apply animation to the redraw.\n *\n * @emits Highcharts.Chart#event:afterSetExtremes\n * @emits Highcharts.Chart#event:beforeRedraw\n * @emits Highcharts.Chart#event:predraw\n * @emits Highcharts.Chart#event:redraw\n * @emits Highcharts.Chart#event:render\n * @emits Highcharts.Chart#event:updatedData\n */\n Chart.prototype.redraw = function (animation) {\n fireEvent(this, 'beforeRedraw');\n var chart = this,\n axes = chart.hasCartesianSeries ? chart.axes : chart.colorAxis || [],\n series = chart.series,\n pointer = chart.pointer,\n legend = chart.legend,\n legendUserOptions = chart.userOptions.legend,\n renderer = chart.renderer,\n isHiddenChart = renderer.isHidden(),\n afterRedraw = [];\n var hasDirtyStacks,\n hasStackedSeries,\n i,\n isDirtyBox = chart.isDirtyBox,\n redrawLegend = chart.isDirtyLegend,\n serie;\n // Handle responsive rules, not only on resize (#6130)\n if (chart.setResponsive) {\n chart.setResponsive(false);\n }\n // Set the global animation. When chart.hasRendered is not true, the\n // redraw call comes from a responsive rule and animation should not\n // occur.\n setAnimation(chart.hasRendered ? animation : false, chart);\n if (isHiddenChart) {\n chart.temporaryDisplay();\n }\n // Adjust title layout (reflow multiline text)\n chart.layOutTitles();\n // link stacked series\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking || serie.options.centerInCategory) {\n hasStackedSeries = true;\n if (serie.isDirty) {\n hasDirtyStacks = true;\n break;\n }\n }\n }\n if (hasDirtyStacks) { // mark others as dirty\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking) {\n serie.isDirty = true;\n }\n }\n }\n // Handle updated data in the series\n series.forEach(function (serie) {\n if (serie.isDirty) {\n if (serie.options.legendType === 'point') {\n if (typeof serie.updateTotals === 'function') {\n serie.updateTotals();\n }\n redrawLegend = true;\n }\n else if (legendUserOptions &&\n (legendUserOptions.labelFormatter ||\n legendUserOptions.labelFormat)) {\n redrawLegend = true; // #2165\n }\n }\n if (serie.isDirtyData) {\n fireEvent(serie, 'updatedData');\n }\n });\n // handle added or removed series\n if (redrawLegend && legend && legend.options.enabled) {\n // draw legend graphics\n legend.render();\n chart.isDirtyLegend = false;\n }\n // reset stacks\n if (hasStackedSeries) {\n chart.getStacks();\n }\n // set axes scales\n axes.forEach(function (axis) {\n axis.updateNames();\n axis.setScale();\n });\n chart.getMargins(); // #3098\n // If one axis is dirty, all axes must be redrawn (#792, #2169)\n axes.forEach(function (axis) {\n if (axis.isDirty) {\n isDirtyBox = true;\n }\n });\n // redraw axes\n axes.forEach(function (axis) {\n // Fire 'afterSetExtremes' only if extremes are set\n var key = axis.min + ',' + axis.max;\n if (axis.extKey !== key) { // #821, #4452\n axis.extKey = key;\n // prevent a recursive call to chart.redraw() (#1119)\n afterRedraw.push(function () {\n fireEvent(axis, 'afterSetExtremes', extend(axis.eventArgs, axis.getExtremes())); // #747, #751\n delete axis.eventArgs;\n });\n }\n if (isDirtyBox || hasStackedSeries) {\n axis.redraw();\n }\n });\n // the plot areas size has changed\n if (isDirtyBox) {\n chart.drawChartBox();\n }\n // Fire an event before redrawing series, used by the boost module to\n // clear previous series renderings.\n fireEvent(chart, 'predraw');\n // redraw affected series\n series.forEach(function (serie) {\n if ((isDirtyBox || serie.isDirty) && serie.visible) {\n serie.redraw();\n }\n // Set it here, otherwise we will have unlimited 'updatedData' calls\n // for a hidden series after setData(). Fixes #6012\n serie.isDirtyData = false;\n });\n // move tooltip or reset\n if (pointer) {\n pointer.reset(true);\n }\n // redraw if canvas\n renderer.draw();\n // Fire the events\n fireEvent(chart, 'redraw');\n fireEvent(chart, 'render');\n if (isHiddenChart) {\n chart.temporaryDisplay(true);\n }\n // Fire callbacks that are put on hold until after the redraw\n afterRedraw.forEach(function (callback) {\n callback.call();\n });\n };\n /**\n * Get an axis, series or point object by `id` as given in the configuration\n * options. Returns `undefined` if no item is found.\n *\n * @sample highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @function Highcharts.Chart#get\n *\n * @param {string} id\n * The id as given in the configuration options.\n *\n * @return {Highcharts.Axis|Highcharts.Series|Highcharts.Point|undefined}\n * The retrieved item.\n */\n Chart.prototype.get = function (id) {\n var series = this.series;\n /**\n * @private\n */\n function itemById(item) {\n return (item.id === id ||\n (item.options && item.options.id === id));\n }\n var ret = \n // Search axes\n find(this.axes,\n itemById) ||\n // Search series\n find(this.series,\n itemById);\n // Search points\n for (var i = 0; !ret && i < series.length; i++) {\n ret = find(series[i].points || [], itemById);\n }\n return ret;\n };\n /**\n * Create the Axis instances based on the config options.\n *\n * @private\n * @function Highcharts.Chart#getAxes\n * @emits Highcharts.Chart#event:afterGetAxes\n * @emits Highcharts.Chart#event:getAxes\n */\n Chart.prototype.getAxes = function () {\n var chart = this,\n options = this.options,\n xAxisOptions = options.xAxis = splat(options.xAxis || {}),\n yAxisOptions = options.yAxis = splat(options.yAxis || {});\n fireEvent(this, 'getAxes');\n // make sure the options are arrays and add some members\n xAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n axis.isX = true;\n });\n yAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n });\n // concatenate all axis options into one array\n var optionsArray = xAxisOptions.concat(yAxisOptions);\n optionsArray.forEach(function (axisOptions) {\n new Axis(chart, axisOptions); // eslint-disable-line no-new\n });\n fireEvent(this, 'afterGetAxes');\n };\n /**\n * Returns an array of all currently selected points in the chart. Points\n * can be selected by clicking or programmatically by the\n * {@link Highcharts.Point#select}\n * function.\n *\n * @sample highcharts/plotoptions/series-allowpointselect-line/\n * Get selected points\n *\n * @function Highcharts.Chart#getSelectedPoints\n *\n * @return {Array}\n * The currently selected points.\n */\n Chart.prototype.getSelectedPoints = function () {\n return this.series.reduce(function (acc, series) {\n // For one-to-one points inspect series.data in order to retrieve\n // points outside the visible range (#6445). For grouped data,\n // inspect the generated series.points.\n series.getPointsCollection()\n .forEach(function (point) {\n if (pick(point.selectedStaging, point.selected)) {\n acc.push(point);\n }\n });\n return acc;\n }, []);\n };\n /**\n * Returns an array of all currently selected series in the chart. Series\n * can be selected either programmatically by the\n * {@link Highcharts.Series#select}\n * function or by checking the checkbox next to the legend item if\n * [series.showCheckBox](https://api.highcharts.com/highcharts/plotOptions.series.showCheckbox)\n * is true.\n *\n * @sample highcharts/members/chart-getselectedseries/\n * Get selected series\n *\n * @function Highcharts.Chart#getSelectedSeries\n *\n * @return {Array}\n * The currently selected series.\n */\n Chart.prototype.getSelectedSeries = function () {\n return this.series.filter(function (serie) {\n return serie.selected;\n });\n };\n /**\n * Set a new title or subtitle for the chart.\n *\n * @sample highcharts/members/chart-settitle/\n * Set title text and styles\n *\n * @function Highcharts.Chart#setTitle\n *\n * @param {Highcharts.TitleOptions} [titleOptions]\n * New title options. The title text itself is set by the\n * `titleOptions.text` property.\n *\n * @param {Highcharts.SubtitleOptions} [subtitleOptions]\n * New subtitle options. The subtitle text itself is set by the\n * `subtitleOptions.text` property.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart or wait for a later call to\n * `chart.redraw()`.\n */\n Chart.prototype.setTitle = function (titleOptions, subtitleOptions, redraw) {\n this.applyDescription('title', titleOptions);\n this.applyDescription('subtitle', subtitleOptions);\n // The initial call also adds the caption. On update, chart.update will\n // relay to Chart.setCaption.\n this.applyDescription('caption', void 0);\n this.layOutTitles(redraw);\n };\n /**\n * Apply a title, subtitle or caption for the chart\n *\n * @private\n * @function Highcharts.Chart#applyDescription\n * @param name {string}\n * Either title, subtitle or caption\n * @param {Highcharts.TitleOptions|Highcharts.SubtitleOptions|Highcharts.CaptionOptions|undefined} explicitOptions\n * The options to set, will be merged with default options.\n */\n Chart.prototype.applyDescription = function (name, explicitOptions) {\n var chart = this;\n // Default style\n var style = name === 'title' ? {\n color: \"#333333\" /* Palette.neutralColor80 */,\n fontSize: this.options.isStock ? '16px' : '18px' // #2944\n } : {\n color: \"#666666\" /* Palette.neutralColor60 */\n };\n // Merge default options with explicit options\n var options = this.options[name] = merge(\n // Default styles\n (!this.styledMode && { style: style }),\n this.options[name],\n explicitOptions);\n var elem = this[name];\n if (elem && explicitOptions) {\n this[name] = elem = elem.destroy(); // remove old\n }\n if (options && !elem) {\n elem = this.renderer.text(options.text, 0, 0, options.useHTML)\n .attr({\n align: options.align,\n 'class': 'highcharts-' + name,\n zIndex: options.zIndex || 4\n })\n .add();\n // Update methods, shortcut to Chart.setTitle, Chart.setSubtitle and\n // Chart.setCaption\n elem.update = function (updateOptions) {\n var fn = {\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n }[name];\n chart[fn](updateOptions);\n };\n // Presentational\n if (!this.styledMode) {\n elem.css(options.style);\n }\n /**\n * The chart title. The title has an `update` method that allows\n * modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @sample highcharts/members/title-update/\n * Updating titles\n *\n * @name Highcharts.Chart#title\n * @type {Highcharts.TitleObject}\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @name Highcharts.Chart#subtitle\n * @type {Highcharts.SubtitleObject}\n */\n this[name] = elem;\n }\n };\n /**\n * Internal function to lay out the chart title, subtitle and caption, and\n * cache the full offset height for use in `getMargins`. The result is\n * stored in `this.titleOffset`.\n *\n * @private\n * @function Highcharts.Chart#layOutTitles\n *\n * @param {boolean} [redraw=true]\n * @emits Highcharts.Chart#event:afterLayOutTitles\n */\n Chart.prototype.layOutTitles = function (redraw) {\n var titleOffset = [0, 0, 0],\n renderer = this.renderer,\n spacingBox = this.spacingBox;\n // Lay out the title and the subtitle respectively\n ['title', 'subtitle', 'caption'].forEach(function (key) {\n var title = this[key], titleOptions = (this.options[key]), verticalAlign = titleOptions.verticalAlign || 'top', offset = key === 'title' ?\n verticalAlign === 'top' ? -3 : 0 :\n // Floating subtitle (#6574)\n verticalAlign === 'top' ? titleOffset[0] + 2 : 0;\n var titleSize,\n height;\n if (title) {\n if (!this.styledMode) {\n titleSize = (titleOptions.style &&\n titleOptions.style.fontSize);\n }\n titleSize = renderer.fontMetrics(titleSize, title).b;\n title\n .css({\n width: (titleOptions.width ||\n spacingBox.width + (titleOptions.widthAdjust || 0)) + 'px'\n });\n // Skip the cache for HTML (#3481, #11666)\n height = Math.round(title.getBBox(titleOptions.useHTML).height);\n title.align(extend({\n y: verticalAlign === 'bottom' ?\n titleSize :\n offset + titleSize,\n height: height\n }, titleOptions), false, 'spacingBox');\n if (!titleOptions.floating) {\n if (verticalAlign === 'top') {\n titleOffset[0] = Math.ceil(titleOffset[0] +\n height);\n }\n else if (verticalAlign === 'bottom') {\n titleOffset[2] = Math.ceil(titleOffset[2] +\n height);\n }\n }\n }\n }, this);\n // Handle title.margin and caption.margin\n if (titleOffset[0] &&\n (this.options.title.verticalAlign || 'top') === 'top') {\n titleOffset[0] += this.options.title.margin;\n }\n if (titleOffset[2] &&\n this.options.caption.verticalAlign === 'bottom') {\n titleOffset[2] += this.options.caption.margin;\n }\n var requiresDirtyBox = (!this.titleOffset ||\n this.titleOffset.join(',') !== titleOffset.join(','));\n // Used in getMargins\n this.titleOffset = titleOffset;\n fireEvent(this, 'afterLayOutTitles');\n if (!this.isDirtyBox && requiresDirtyBox) {\n this.isDirtyBox = this.isDirtyLegend = requiresDirtyBox;\n // Redraw if necessary (#2719, #2744)\n if (this.hasRendered && pick(redraw, true) && this.isDirtyBox) {\n this.redraw();\n }\n }\n };\n /**\n * Internal function to get the chart width and height according to options\n * and container size. Sets {@link Chart.chartWidth} and\n * {@link Chart.chartHeight}.\n *\n * @private\n * @function Highcharts.Chart#getChartSize\n */\n Chart.prototype.getChartSize = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n widthOption = optionsChart.width,\n heightOption = optionsChart.height,\n renderTo = chart.renderTo;\n // Get inner width and height\n if (!defined(widthOption)) {\n chart.containerWidth = getStyle(renderTo, 'width');\n }\n if (!defined(heightOption)) {\n chart.containerHeight = getStyle(renderTo, 'height');\n }\n /**\n * The current pixel width of the chart.\n *\n * @name Highcharts.Chart#chartWidth\n * @type {number}\n */\n chart.chartWidth = Math.max(// #1393\n 0, widthOption || chart.containerWidth || 600 // #1460\n );\n /**\n * The current pixel height of the chart.\n *\n * @name Highcharts.Chart#chartHeight\n * @type {number}\n */\n chart.chartHeight = Math.max(0, relativeLength(heightOption, chart.chartWidth) ||\n (chart.containerHeight > 1 ?\n chart.containerHeight :\n 400));\n };\n /**\n * If the renderTo element has no offsetWidth, most likely one or more of\n * its parents are hidden. Loop up the DOM tree to temporarily display the\n * parents, then save the original display properties, and when the true\n * size is retrieved, reset them. Used on first render and on redraws.\n *\n * @private\n * @function Highcharts.Chart#temporaryDisplay\n *\n * @param {boolean} [revert]\n * Revert to the saved original styles.\n */\n Chart.prototype.temporaryDisplay = function (revert) {\n var node = this.renderTo,\n tempStyle;\n if (!revert) {\n while (node && node.style) {\n // When rendering to a detached node, it needs to be temporarily\n // attached in order to read styling and bounding boxes (#5783,\n // #7024).\n if (!doc.body.contains(node) && !node.parentNode) {\n node.hcOrigDetached = true;\n doc.body.appendChild(node);\n }\n if (getStyle(node, 'display', false) === 'none' ||\n node.hcOricDetached) {\n node.hcOrigStyle = {\n display: node.style.display,\n height: node.style.height,\n overflow: node.style.overflow\n };\n tempStyle = {\n display: 'block',\n overflow: 'hidden'\n };\n if (node !== this.renderTo) {\n tempStyle.height = 0;\n }\n css(node, tempStyle);\n // If it still doesn't have an offset width after setting\n // display to block, it probably has an !important priority\n // #2631, 6803\n if (!node.offsetWidth) {\n node.style.setProperty('display', 'block', 'important');\n }\n }\n node = node.parentNode;\n if (node === doc.body) {\n break;\n }\n }\n }\n else {\n while (node && node.style) {\n if (node.hcOrigStyle) {\n css(node, node.hcOrigStyle);\n delete node.hcOrigStyle;\n }\n if (node.hcOrigDetached) {\n doc.body.removeChild(node);\n node.hcOrigDetached = false;\n }\n node = node.parentNode;\n }\n }\n };\n /**\n * Set the {@link Chart.container|chart container's} class name, in\n * addition to `highcharts-container`.\n *\n * @function Highcharts.Chart#setClassName\n *\n * @param {string} [className]\n * The additional class name.\n */\n Chart.prototype.setClassName = function (className) {\n this.container.className = 'highcharts-container ' + (className || '');\n };\n /**\n * Get the containing element, determine the size and create the inner\n * container div to hold the chart.\n *\n * @private\n * @function Highcharts.Chart#afterGetContainer\n * @emits Highcharts.Chart#event:afterGetContainer\n */\n Chart.prototype.getContainer = function () {\n var chart = this,\n options = chart.options,\n optionsChart = options.chart,\n indexAttrName = 'data-highcharts-chart',\n containerId = uniqueKey();\n var containerStyle,\n renderTo = chart.renderTo;\n if (!renderTo) {\n chart.renderTo = renderTo =\n optionsChart.renderTo;\n }\n if (isString(renderTo)) {\n chart.renderTo = renderTo =\n doc.getElementById(renderTo);\n }\n // Display an error if the renderTo is wrong\n if (!renderTo) {\n error(13, true, chart);\n }\n // If the container already holds a chart, destroy it. The check for\n // hasRendered is there because web pages that are saved to disk from\n // the browser, will preserve the data-highcharts-chart attribute and\n // the SVG contents, but not an interactive chart. So in this case,\n // charts[oldChartIndex] will point to the wrong chart if any (#2609).\n var oldChartIndex = pInt(attr(renderTo,\n indexAttrName));\n if (isNumber(oldChartIndex) &&\n charts[oldChartIndex] &&\n charts[oldChartIndex].hasRendered) {\n charts[oldChartIndex].destroy();\n }\n // Make a reference to the chart from the div\n attr(renderTo, indexAttrName, chart.index);\n // remove previous chart\n renderTo.innerHTML = AST.emptyHTML;\n // If the container doesn't have an offsetWidth, it has or is a child of\n // a node that has display:none. We need to temporarily move it out to a\n // visible state to determine the size, else the legend and tooltips\n // won't render properly. The skipClone option is used in sparklines as\n // a micro optimization, saving about 1-2 ms each chart.\n if (!optionsChart.skipClone && !renderTo.offsetWidth) {\n chart.temporaryDisplay();\n }\n // get the width and height\n chart.getChartSize();\n var chartWidth = chart.chartWidth;\n var chartHeight = chart.chartHeight;\n // Allow table cells and flex-boxes to shrink without the chart blocking\n // them out (#6427)\n css(renderTo, { overflow: 'hidden' });\n // Create the inner container\n if (!chart.styledMode) {\n containerStyle = extend({\n position: 'relative',\n // needed for context menu (avoidscrollbars) and content\n // overflow in IE\n overflow: 'hidden',\n width: chartWidth + 'px',\n height: chartHeight + 'px',\n textAlign: 'left',\n lineHeight: 'normal',\n zIndex: 0,\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n userSelect: 'none',\n 'touch-action': 'manipulation',\n outline: 'none'\n }, optionsChart.style || {});\n }\n /**\n * The containing HTML element of the chart. The container is\n * dynamically inserted into the element given as the `renderTo`\n * parameter in the {@link Highcharts#chart} constructor.\n *\n * @name Highcharts.Chart#container\n * @type {Highcharts.HTMLDOMElement}\n */\n var container = createElement('div', {\n id: containerId\n },\n containerStyle,\n renderTo);\n chart.container = container;\n // cache the cursor (#1650)\n chart._cursor = container.style.cursor;\n // Initialize the renderer\n var Renderer = optionsChart.renderer || !svg ?\n RendererRegistry.getRendererType(optionsChart.renderer) :\n SVGRenderer;\n /**\n * The renderer instance of the chart. Each chart instance has only one\n * associated renderer.\n *\n * @name Highcharts.Chart#renderer\n * @type {Highcharts.SVGRenderer}\n */\n chart.renderer = new Renderer(container, chartWidth, chartHeight, void 0, optionsChart.forExport, options.exporting && options.exporting.allowHTML, chart.styledMode);\n // Set the initial animation from the options\n setAnimation(void 0, chart);\n chart.setClassName(optionsChart.className);\n if (!chart.styledMode) {\n chart.renderer.setStyle(optionsChart.style);\n }\n else {\n // Initialize definitions\n for (var key in options.defs) { // eslint-disable-line guard-for-in\n this.renderer.definition(options.defs[key]);\n }\n }\n // Add a reference to the charts index\n chart.renderer.chartIndex = chart.index;\n fireEvent(this, 'afterGetContainer');\n };\n /**\n * Calculate margins by rendering axis labels in a preliminary position.\n * Title, subtitle and legend have already been rendered at this stage, but\n * will be moved into their final positions.\n *\n * @private\n * @function Highcharts.Chart#getMargins\n * @emits Highcharts.Chart#event:getMargins\n */\n Chart.prototype.getMargins = function (skipAxes) {\n var _a = this,\n spacing = _a.spacing,\n margin = _a.margin,\n titleOffset = _a.titleOffset;\n this.resetMargins();\n // Adjust for title and subtitle\n if (titleOffset[0] && !defined(margin[0])) {\n this.plotTop = Math.max(this.plotTop, titleOffset[0] + spacing[0]);\n }\n if (titleOffset[2] && !defined(margin[2])) {\n this.marginBottom = Math.max(this.marginBottom, titleOffset[2] + spacing[2]);\n }\n // Adjust for legend\n if (this.legend && this.legend.display) {\n this.legend.adjustMargins(margin, spacing);\n }\n fireEvent(this, 'getMargins');\n if (!skipAxes) {\n this.getAxisMargins();\n }\n };\n /**\n * @private\n * @function Highcharts.Chart#getAxisMargins\n */\n Chart.prototype.getAxisMargins = function () {\n var chart = this, \n // [top, right, bottom, left]\n axisOffset = chart.axisOffset = [0, 0, 0, 0],\n colorAxis = chart.colorAxis,\n margin = chart.margin,\n getOffset = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.getOffset();\n }\n });\n };\n // pre-render axes to get labels offset width\n if (chart.hasCartesianSeries) {\n getOffset(chart.axes);\n }\n else if (colorAxis && colorAxis.length) {\n getOffset(colorAxis);\n }\n // Add the axis offsets\n marginNames.forEach(function (m, side) {\n if (!defined(margin[side])) {\n chart[m] += axisOffset[side];\n }\n });\n chart.setChartSize();\n };\n /**\n * Reflows the chart to its container. By default, the chart reflows\n * automatically to its container following a `window.resize` event, as per\n * the [chart.reflow](https://api.highcharts.com/highcharts/chart.reflow)\n * option. However, there are no reliable events for div resize, so if the\n * container is resized without a window resize event, this must be called\n * explicitly.\n *\n * @sample highcharts/members/chart-reflow/\n * Resize div and reflow\n * @sample highcharts/chart/events-container/\n * Pop up and reflow\n *\n * @function Highcharts.Chart#reflow\n *\n * @param {global.Event} [e]\n * Event arguments. Used primarily when the function is called\n * internally as a response to window resize.\n */\n Chart.prototype.reflow = function (e) {\n var chart = this, optionsChart = chart.options.chart, renderTo = chart.renderTo, hasUserSize = (defined(optionsChart.width) &&\n defined(optionsChart.height)), width = optionsChart.width || getStyle(renderTo, 'width'), height = optionsChart.height || getStyle(renderTo, 'height'), target = e ? e.target : win;\n delete chart.pointer.chartPosition;\n // Width and height checks for display:none. Target is doc in IE8 and\n // Opera, win in Firefox, Chrome and IE9.\n if (!hasUserSize &&\n !chart.isPrinting &&\n width &&\n height &&\n (target === win || target === doc)) {\n if (width !== chart.containerWidth ||\n height !== chart.containerHeight) {\n U.clearTimeout(chart.reflowTimeout);\n // When called from window.resize, e is set, else it's called\n // directly (#2224)\n chart.reflowTimeout = syncTimeout(function () {\n // Set size, it may have been destroyed in the meantime\n // (#1257)\n if (chart.container) {\n chart.setSize(void 0, void 0, false);\n }\n }, e ? 100 : 0);\n }\n chart.containerWidth = width;\n chart.containerHeight = height;\n }\n };\n /**\n * Toggle the event handlers necessary for auto resizing, depending on the\n * `chart.reflow` option.\n *\n * @private\n * @function Highcharts.Chart#setReflow\n */\n Chart.prototype.setReflow = function (reflow) {\n var chart = this;\n if (reflow !== false && !this.unbindReflow) {\n this.unbindReflow = addEvent(win, 'resize', function (e) {\n // a removed event listener still runs in Edge and IE if the\n // listener was removed while the event runs, so check if the\n // chart is not destroyed (#11609)\n if (chart.options) {\n chart.reflow(e);\n }\n });\n addEvent(this, 'destroy', this.unbindReflow);\n }\n else if (reflow === false && this.unbindReflow) {\n // Unbind and unset\n this.unbindReflow = this.unbindReflow();\n }\n // The following will add listeners to re-fit the chart before and after\n // printing (#2284). However it only works in WebKit. Should have worked\n // in Firefox, but not supported in IE.\n /*\n if (win.matchMedia) {\n win.matchMedia('print').addListener(function reflow() {\n chart.reflow();\n });\n }\n //*/\n };\n /**\n * Resize the chart to a given width and height. In order to set the width\n * only, the height argument may be skipped. To set the height only, pass\n * `undefined` for the width.\n *\n * @sample highcharts/members/chart-setsize-button/\n * Test resizing from buttons\n * @sample highcharts/members/chart-setsize-jquery-resizable/\n * Add a jQuery UI resizable\n * @sample stock/members/chart-setsize/\n * Highcharts Stock with UI resizable\n *\n * @function Highcharts.Chart#setSize\n *\n * @param {number|null} [width]\n * The new pixel width of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value (when\n * setting height only), or `null` to adapt to the width of the\n * containing element.\n *\n * @param {number|null} [height]\n * The new pixel height of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value, or `null`\n * in order to adapt to the height of the containing element.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether and how to apply animation.\n *\n *\n * @emits Highcharts.Chart#event:endResize\n * @emits Highcharts.Chart#event:resize\n */\n Chart.prototype.setSize = function (width, height, animation) {\n var chart = this,\n renderer = chart.renderer;\n // Handle the isResizing counter\n chart.isResizing += 1;\n // set the animation for the current process\n setAnimation(animation, chart);\n var globalAnimation = renderer.globalAnimation;\n chart.oldChartHeight = chart.chartHeight;\n chart.oldChartWidth = chart.chartWidth;\n if (typeof width !== 'undefined') {\n chart.options.chart.width = width;\n }\n if (typeof height !== 'undefined') {\n chart.options.chart.height = height;\n }\n chart.getChartSize();\n // Resize the container with the global animation applied if enabled\n // (#2503)\n if (!chart.styledMode) {\n (globalAnimation ? animate : css)(chart.container, {\n width: chart.chartWidth + 'px',\n height: chart.chartHeight + 'px'\n }, globalAnimation);\n }\n chart.setChartSize(true);\n renderer.setSize(chart.chartWidth, chart.chartHeight, globalAnimation);\n // handle axes\n chart.axes.forEach(function (axis) {\n axis.isDirty = true;\n axis.setScale();\n });\n chart.isDirtyLegend = true; // force legend redraw\n chart.isDirtyBox = true; // force redraw of plot and chart border\n chart.layOutTitles(); // #2857\n chart.getMargins();\n chart.redraw(globalAnimation);\n chart.oldChartHeight = null;\n fireEvent(chart, 'resize');\n // Fire endResize and set isResizing back. If animation is disabled,\n // fire without delay\n syncTimeout(function () {\n if (chart) {\n fireEvent(chart, 'endResize', null, function () {\n chart.isResizing -= 1;\n });\n }\n }, animObject(globalAnimation).duration);\n };\n /**\n * Set the public chart properties. This is done before and after the\n * pre-render to determine margin sizes.\n *\n * @private\n * @function Highcharts.Chart#setChartSize\n * @emits Highcharts.Chart#event:afterSetChartSize\n */\n Chart.prototype.setChartSize = function (skipAxes) {\n var chart = this,\n inverted = chart.inverted,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n optionsChart = chart.options.chart,\n spacing = chart.spacing,\n clipOffset = chart.clipOffset;\n var plotLeft,\n plotTop,\n plotWidth,\n plotHeight;\n /**\n * The current left position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotLeft\n * @type {number}\n */\n chart.plotLeft = plotLeft = Math.round(chart.plotLeft);\n /**\n * The current top position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotTop\n * @type {number}\n */\n chart.plotTop = plotTop = Math.round(chart.plotTop);\n /**\n * The current width of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotWidth\n * @type {number}\n */\n chart.plotWidth = plotWidth = Math.max(0, Math.round(chartWidth - plotLeft - chart.marginRight));\n /**\n * The current height of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotHeight\n * @type {number}\n */\n chart.plotHeight = plotHeight = Math.max(0, Math.round(chartHeight - plotTop - chart.marginBottom));\n chart.plotSizeX = inverted ? plotHeight : plotWidth;\n chart.plotSizeY = inverted ? plotWidth : plotHeight;\n chart.plotBorderWidth = optionsChart.plotBorderWidth || 0;\n // Set boxes used for alignment\n chart.spacingBox = renderer.spacingBox = {\n x: spacing[3],\n y: spacing[0],\n width: chartWidth - spacing[3] - spacing[1],\n height: chartHeight - spacing[0] - spacing[2]\n };\n chart.plotBox = renderer.plotBox = {\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n };\n var plotBorderWidth = 2 * Math.floor(chart.plotBorderWidth / 2),\n clipX = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[3]) / 2),\n clipY = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[0]) / 2);\n chart.clipBox = {\n x: clipX,\n y: clipY,\n width: Math.floor(chart.plotSizeX -\n Math.max(plotBorderWidth, clipOffset[1]) / 2 -\n clipX),\n height: Math.max(0, Math.floor(chart.plotSizeY -\n Math.max(plotBorderWidth, clipOffset[2]) / 2 -\n clipY))\n };\n if (!skipAxes) {\n chart.axes.forEach(function (axis) {\n axis.setAxisSize();\n axis.setAxisTranslation();\n });\n renderer.alignElements();\n }\n fireEvent(chart, 'afterSetChartSize', { skipAxes: skipAxes });\n };\n /**\n * Initial margins before auto size margins are applied.\n *\n * @private\n * @function Highcharts.Chart#resetMargins\n */\n Chart.prototype.resetMargins = function () {\n fireEvent(this, 'resetMargins');\n var chart = this,\n chartOptions = chart.options.chart;\n // Create margin and spacing array\n ['margin', 'spacing'].forEach(function splashArrays(target) {\n var value = chartOptions[target],\n values = isObject(value) ? value : [value,\n value,\n value,\n value];\n [\n 'Top',\n 'Right',\n 'Bottom',\n 'Left'\n ].forEach(function (sideName, side) {\n chart[target][side] = pick(chartOptions[target + sideName], values[side]);\n });\n });\n // Set margin names like chart.plotTop, chart.plotLeft,\n // chart.marginRight, chart.marginBottom.\n marginNames.forEach(function (m, side) {\n chart[m] = pick(chart.margin[side], chart.spacing[side]);\n });\n chart.axisOffset = [0, 0, 0, 0]; // top, right, bottom, left\n chart.clipOffset = [0, 0, 0, 0];\n };\n /**\n * Internal function to draw or redraw the borders and backgrounds for chart\n * and plot area.\n *\n * @private\n * @function Highcharts.Chart#drawChartBox\n * @emits Highcharts.Chart#event:afterDrawChartBox\n */\n Chart.prototype.drawChartBox = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n styledMode = chart.styledMode,\n plotBGImage = chart.plotBGImage,\n chartBackgroundColor = optionsChart.backgroundColor,\n plotBackgroundColor = optionsChart.plotBackgroundColor,\n plotBackgroundImage = optionsChart.plotBackgroundImage,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotBox = chart.plotBox,\n clipRect = chart.clipRect,\n clipBox = chart.clipBox;\n var chartBackground = chart.chartBackground,\n plotBackground = chart.plotBackground,\n plotBorder = chart.plotBorder,\n chartBorderWidth,\n mgn,\n bgAttr,\n verb = 'animate';\n // Chart area\n if (!chartBackground) {\n chart.chartBackground = chartBackground = renderer.rect()\n .addClass('highcharts-background')\n .add();\n verb = 'attr';\n }\n if (!styledMode) {\n // Presentational\n chartBorderWidth = optionsChart.borderWidth || 0;\n mgn = chartBorderWidth + (optionsChart.shadow ? 8 : 0);\n bgAttr = {\n fill: chartBackgroundColor || 'none'\n };\n if (chartBorderWidth || chartBackground['stroke-width']) { // #980\n bgAttr.stroke = optionsChart.borderColor;\n bgAttr['stroke-width'] = chartBorderWidth;\n }\n chartBackground\n .attr(bgAttr)\n .shadow(optionsChart.shadow);\n }\n else {\n chartBorderWidth = mgn = chartBackground.strokeWidth();\n }\n chartBackground[verb]({\n x: mgn / 2,\n y: mgn / 2,\n width: chartWidth - mgn - chartBorderWidth % 2,\n height: chartHeight - mgn - chartBorderWidth % 2,\n r: optionsChart.borderRadius\n });\n // Plot background\n verb = 'animate';\n if (!plotBackground) {\n verb = 'attr';\n chart.plotBackground = plotBackground = renderer.rect()\n .addClass('highcharts-plot-background')\n .add();\n }\n plotBackground[verb](plotBox);\n if (!styledMode) {\n // Presentational attributes for the background\n plotBackground\n .attr({\n fill: plotBackgroundColor || 'none'\n })\n .shadow(optionsChart.plotShadow);\n // Create the background image\n if (plotBackgroundImage) {\n if (!plotBGImage) {\n chart.plotBGImage = renderer.image(plotBackgroundImage, plotLeft, plotTop, plotWidth, plotHeight).add();\n }\n else {\n if (plotBackgroundImage !== plotBGImage.attr('href')) {\n plotBGImage.attr('href', plotBackgroundImage);\n }\n plotBGImage.animate(plotBox);\n }\n }\n }\n // Plot clip\n if (!clipRect) {\n chart.clipRect = renderer.clipRect(clipBox);\n }\n else {\n clipRect.animate({\n width: clipBox.width,\n height: clipBox.height\n });\n }\n // Plot area border\n verb = 'animate';\n if (!plotBorder) {\n verb = 'attr';\n chart.plotBorder = plotBorder = renderer.rect()\n .addClass('highcharts-plot-border')\n .attr({\n zIndex: 1 // Above the grid\n })\n .add();\n }\n if (!styledMode) {\n // Presentational\n plotBorder.attr({\n stroke: optionsChart.plotBorderColor,\n 'stroke-width': optionsChart.plotBorderWidth || 0,\n fill: 'none'\n });\n }\n plotBorder[verb](plotBorder.crisp({\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n }, -plotBorder.strokeWidth())); // #3282 plotBorder should be negative;\n // reset\n chart.isDirtyBox = false;\n fireEvent(this, 'afterDrawChartBox');\n };\n /**\n * Detect whether a certain chart property is needed based on inspecting its\n * options and series. This mainly applies to the chart.inverted property,\n * and in extensions to the chart.angular and chart.polar properties.\n *\n * @private\n * @function Highcharts.Chart#propFromSeries\n */\n Chart.prototype.propFromSeries = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n seriesOptions = chart.options.series;\n var i,\n klass,\n value;\n /**\n * The flag is set to `true` if a series of the chart is inverted.\n *\n * @name Highcharts.Chart#inverted\n * @type {boolean|undefined}\n */\n ['inverted', 'angular', 'polar'].forEach(function (key) {\n // The default series type's class\n klass = seriesTypes[(optionsChart.type || optionsChart.defaultSeriesType)];\n // Get the value from available chart-wide properties\n value =\n // It is set in the options:\n optionsChart[key] ||\n // The default series class:\n (klass && klass.prototype[key]);\n // requires it\n // 4. Check if any the chart's series require it\n i = seriesOptions && seriesOptions.length;\n while (!value && i--) {\n klass = seriesTypes[seriesOptions[i].type];\n if (klass && klass.prototype[key]) {\n value = true;\n }\n }\n // Set the chart property\n chart[key] = value;\n });\n };\n /**\n * Internal function to link two or more series together, based on the\n * `linkedTo` option. This is done from `Chart.render`, and after\n * `Chart.addSeries` and `Series.remove`.\n *\n * @private\n * @function Highcharts.Chart#linkSeries\n * @emits Highcharts.Chart#event:afterLinkSeries\n */\n Chart.prototype.linkSeries = function () {\n var chart = this,\n chartSeries = chart.series;\n // Reset links\n chartSeries.forEach(function (series) {\n series.linkedSeries.length = 0;\n });\n // Apply new links\n chartSeries.forEach(function (series) {\n var linkedTo = series.options.linkedTo;\n if (isString(linkedTo)) {\n if (linkedTo === ':previous') {\n linkedTo = chart.series[series.index - 1];\n }\n else {\n linkedTo = chart.get(linkedTo);\n }\n // #3341 avoid mutual linking\n if (linkedTo && linkedTo.linkedParent !== series) {\n linkedTo.linkedSeries.push(series);\n series.linkedParent = linkedTo;\n if (linkedTo.enabledDataSorting) {\n series.setDataSortingOptions();\n }\n series.visible = pick(series.options.visible, linkedTo.options.visible, series.visible); // #3879\n }\n }\n });\n fireEvent(this, 'afterLinkSeries');\n };\n /**\n * Render series for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderSeries\n */\n Chart.prototype.renderSeries = function () {\n this.series.forEach(function (serie) {\n serie.translate();\n serie.render();\n });\n };\n /**\n * Render labels for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderLabels\n */\n Chart.prototype.renderLabels = function () {\n var chart = this,\n labels = chart.options.labels;\n if (labels.items) {\n labels.items.forEach(function (label) {\n var style = extend(labels.style,\n label.style),\n x = pInt(style.left) + chart.plotLeft,\n y = pInt(style.top) + chart.plotTop + 12;\n // delete to prevent rewriting in IE\n delete style.left;\n delete style.top;\n chart.renderer.text(label.html, x, y)\n .attr({ zIndex: 2 })\n .css(style)\n .add();\n });\n }\n };\n /**\n * Render all graphics for the chart. Runs internally on initialization.\n *\n * @private\n * @function Highcharts.Chart#render\n */\n Chart.prototype.render = function () {\n var chart = this,\n axes = chart.axes,\n colorAxis = chart.colorAxis,\n renderer = chart.renderer,\n options = chart.options,\n renderAxes = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.render();\n }\n });\n };\n var correction = 0; // correction for X axis labels\n // Title\n chart.setTitle();\n /**\n * The overview of the chart's series.\n *\n * @name Highcharts.Chart#legend\n * @type {Highcharts.Legend}\n */\n chart.legend = new Legend(chart, options.legend);\n // Get stacks\n if (chart.getStacks) {\n chart.getStacks();\n }\n // Get chart margins\n chart.getMargins(true);\n chart.setChartSize();\n // Record preliminary dimensions for later comparison\n var tempWidth = chart.plotWidth;\n axes.some(function (axis) {\n if (axis.horiz &&\n axis.visible &&\n axis.options.labels.enabled &&\n axis.series.length) {\n // 21 is the most common correction for X axis labels\n correction = 21;\n return true;\n }\n });\n // use Math.max to prevent negative plotHeight\n chart.plotHeight = Math.max(chart.plotHeight - correction, 0);\n var tempHeight = chart.plotHeight;\n // Get margins by pre-rendering axes\n axes.forEach(function (axis) {\n axis.setScale();\n });\n chart.getAxisMargins();\n // If the plot area size has changed significantly, calculate tick\n // positions again\n var redoHorizontal = tempWidth / chart.plotWidth > 1.1;\n // Height is more sensitive, use lower threshold\n var redoVertical = tempHeight / chart.plotHeight > 1.05;\n if (redoHorizontal || redoVertical) {\n axes.forEach(function (axis) {\n if ((axis.horiz && redoHorizontal) ||\n (!axis.horiz && redoVertical)) {\n // update to reflect the new margins\n axis.setTickInterval(true);\n }\n });\n chart.getMargins(); // second pass to check for new labels\n }\n // Draw the borders and backgrounds\n chart.drawChartBox();\n // Axes\n if (chart.hasCartesianSeries) {\n renderAxes(axes);\n }\n else if (colorAxis && colorAxis.length) {\n renderAxes(colorAxis);\n }\n // The series\n if (!chart.seriesGroup) {\n chart.seriesGroup = renderer.g('series-group')\n .attr({ zIndex: 3 })\n .add();\n }\n chart.renderSeries();\n // Labels\n chart.renderLabels();\n // Credits\n chart.addCredits();\n // Handle responsiveness\n if (chart.setResponsive) {\n chart.setResponsive();\n }\n // Set flag\n chart.hasRendered = true;\n };\n /**\n * Set a new credits label for the chart.\n *\n * @sample highcharts/credits/credits-update/\n * Add and update credits\n *\n * @function Highcharts.Chart#addCredits\n *\n * @param {Highcharts.CreditsOptions} [credits]\n * A configuration object for the new credits.\n */\n Chart.prototype.addCredits = function (credits) {\n var chart = this,\n creds = merge(true,\n this.options.credits,\n credits);\n if (creds.enabled && !this.credits) {\n /**\n * The chart's credits label. The label has an `update` method that\n * allows setting new options as per the\n * [credits options set](https://api.highcharts.com/highcharts/credits).\n *\n * @name Highcharts.Chart#credits\n * @type {Highcharts.SVGElement}\n */\n this.credits = this.renderer.text(creds.text + (this.mapCredits || ''), 0, 0)\n .addClass('highcharts-credits')\n .on('click', function () {\n if (creds.href) {\n win.location.href = creds.href;\n }\n })\n .attr({\n align: creds.position.align,\n zIndex: 8\n });\n if (!chart.styledMode) {\n this.credits.css(creds.style);\n }\n this.credits\n .add()\n .align(creds.position);\n // Dynamically update\n this.credits.update = function (options) {\n chart.credits = chart.credits.destroy();\n chart.addCredits(options);\n };\n }\n };\n /**\n * Remove the chart and purge memory. This method is called internally\n * before adding a second chart into the same container, as well as on\n * window unload to prevent leaks.\n *\n * @sample highcharts/members/chart-destroy/\n * Destroy the chart from a button\n * @sample stock/members/chart-destroy/\n * Destroy with Highcharts Stock\n *\n * @function Highcharts.Chart#destroy\n *\n * @emits Highcharts.Chart#event:destroy\n */\n Chart.prototype.destroy = function () {\n var chart = this,\n axes = chart.axes,\n series = chart.series,\n container = chart.container,\n parentNode = container && container.parentNode;\n var i;\n // fire the chart.destoy event\n fireEvent(chart, 'destroy');\n // Delete the chart from charts lookup array\n if (chart.renderer.forExport) {\n erase(charts, chart); // #6569\n }\n else {\n charts[chart.index] = void 0;\n }\n H.chartCount--;\n chart.renderTo.removeAttribute('data-highcharts-chart');\n // remove events\n removeEvent(chart);\n // ==== Destroy collections:\n // Destroy axes\n i = axes.length;\n while (i--) {\n axes[i] = axes[i].destroy();\n }\n // Destroy scroller & scroller series before destroying base series\n if (this.scroller && this.scroller.destroy) {\n this.scroller.destroy();\n }\n // Destroy each series\n i = series.length;\n while (i--) {\n series[i] = series[i].destroy();\n }\n // ==== Destroy chart properties:\n [\n 'title', 'subtitle', 'chartBackground', 'plotBackground',\n 'plotBGImage', 'plotBorder', 'seriesGroup', 'clipRect', 'credits',\n 'pointer', 'rangeSelector', 'legend', 'resetZoomButton', 'tooltip',\n 'renderer'\n ].forEach(function (name) {\n var prop = chart[name];\n if (prop && prop.destroy) {\n chart[name] = prop.destroy();\n }\n });\n // Remove container and all SVG, check container as it can break in IE\n // when destroyed before finished loading\n if (container) {\n container.innerHTML = AST.emptyHTML;\n removeEvent(container);\n if (parentNode) {\n discardElement(container);\n }\n }\n // clean it all up\n objectEach(chart, function (val, key) {\n delete chart[key];\n });\n };\n /**\n * Prepare for first rendering after all data are loaded.\n *\n * @private\n * @function Highcharts.Chart#firstRender\n * @emits Highcharts.Chart#event:beforeRender\n */\n Chart.prototype.firstRender = function () {\n var chart = this,\n options = chart.options;\n // Hook for oldIE to check whether the chart is ready to render\n if (chart.isReadyToRender && !chart.isReadyToRender()) {\n return;\n }\n // Create the container\n chart.getContainer();\n chart.resetMargins();\n chart.setChartSize();\n // Set the common chart properties (mainly invert) from the given series\n chart.propFromSeries();\n // get axes\n chart.getAxes();\n // Initialize the series\n (isArray(options.series) ? options.series : []).forEach(\n // #9680\n function (serieOptions) {\n chart.initSeries(serieOptions);\n });\n chart.linkSeries();\n chart.setSeriesData();\n // Run an event after axes and series are initialized, but before\n // render. At this stage, the series data is indexed and cached in the\n // xData and yData arrays, so we can access those before rendering. Used\n // in Highcharts Stock.\n fireEvent(chart, 'beforeRender');\n // depends on inverted and on margins being set\n if (Pointer) {\n if (MSPointer.isRequired()) {\n chart.pointer = new MSPointer(chart, options);\n }\n else {\n /**\n * The Pointer that keeps track of mouse and touch interaction.\n *\n * @memberof Highcharts.Chart\n * @name pointer\n * @type {Highcharts.Pointer}\n * @instance\n */\n chart.pointer = new Pointer(chart, options);\n }\n }\n chart.render();\n chart.pointer.getChartPosition(); // #14973\n // Fire the load event if there are no external images\n if (!chart.renderer.imgCount && !chart.hasLoaded) {\n chart.onload();\n }\n // If the chart was rendered outside the top container, put it back in\n // (#3679)\n chart.temporaryDisplay(true);\n };\n /**\n * Internal function that runs on chart load, async if any images are loaded\n * in the chart. Runs the callbacks and triggers the `load` and `render`\n * events.\n *\n * @private\n * @function Highcharts.Chart#onload\n * @emits Highcharts.Chart#event:load\n * @emits Highcharts.Chart#event:render\n */\n Chart.prototype.onload = function () {\n // Run callbacks, first the ones registered by modules, then user's one\n this.callbacks.concat([this.callback]).forEach(function (fn) {\n // Chart destroyed in its own callback (#3600)\n if (fn && typeof this.index !== 'undefined') {\n fn.apply(this, [this]);\n }\n }, this);\n fireEvent(this, 'load');\n fireEvent(this, 'render');\n // Set up auto resize, check for not destroyed (#6068)\n if (defined(this.index)) {\n this.setReflow(this.options.chart.reflow);\n }\n this.warnIfA11yModuleNotLoaded();\n // Don't run again\n this.hasLoaded = true;\n };\n /**\n * Emit console warning if the a11y module is not loaded.\n */\n Chart.prototype.warnIfA11yModuleNotLoaded = function () {\n var _a = this,\n options = _a.options,\n title = _a.title;\n if (options && !this.accessibility) {\n // Make chart behave as an image with the title as alt text\n this.renderer.boxWrapper.attr({\n role: 'img',\n 'aria-label': ((title && title.element.textContent) || ''\n // #17753, < is not allowed in SVG attributes\n ).replace(/} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @return {Highcharts.Series}\n * The newly created series object.\n *\n * @emits Highcharts.Chart#event:addSeries\n * @emits Highcharts.Chart#event:afterAddSeries\n */\n Chart.prototype.addSeries = function (options, redraw, animation) {\n var chart = this;\n var series;\n if (options) { // <- not necessary\n redraw = pick(redraw, true); // defaults to true\n fireEvent(chart, 'addSeries', { options: options }, function () {\n series = chart.initSeries(options);\n chart.isDirtyLegend = true;\n chart.linkSeries();\n if (series.enabledDataSorting) {\n // We need to call `setData` after `linkSeries`\n series.setData(options.data, false);\n }\n fireEvent(chart, 'afterAddSeries', { series: series });\n if (redraw) {\n chart.redraw(animation);\n }\n });\n }\n return series;\n };\n /**\n * Add an axis to the chart after render time. Note that this method should\n * never be used when adding data synchronously at chart render time, as it\n * adds expense to the calculations and rendering. When adding data at the\n * same time as the chart is initialized, add the axis as a configuration\n * option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addAxis\n *\n * @param {Highcharts.AxisOptions} options\n * The axis options.\n *\n * @param {boolean} [isX=false]\n * Whether it is an X axis or a value axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.Axis}\n * The newly generated Axis object.\n */\n Chart.prototype.addAxis = function (options, isX, redraw, animation) {\n return this.createAxis(isX ? 'xAxis' : 'yAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Add a color axis to the chart after render time. Note that this method\n * should never be used when adding data synchronously at chart render time,\n * as it adds expense to the calculations and rendering. When adding data at\n * the same time as the chart is initialized, add the axis as a\n * configuration option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addColorAxis\n *\n * @param {Highcharts.ColorAxisOptions} options\n * The axis options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.addColorAxis = function (options, redraw, animation) {\n return this.createAxis('colorAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Factory for creating different axis types.\n *\n * @private\n * @function Highcharts.Chart#createAxis\n *\n * @param {string} type\n * An axis type.\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @return {Highcharts.Axis | Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.createAxis = function (type, options) {\n var axis = new Axis(this,\n merge(options.axis, {\n index: this[type].length,\n isX: type === 'xAxis'\n }));\n if (pick(options.redraw, true)) {\n this.redraw(options.animation);\n }\n return axis;\n };\n /**\n * Dim the chart and show a loading text or symbol. Options for the loading\n * screen are defined in {@link\n * https://api.highcharts.com/highcharts/loading|the loading options}.\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample highcharts/members/chart-showloading/\n * Apply different text labels\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#showLoading\n *\n * @param {string} [str]\n * An optional text to show in the loading label instead of the\n * default one. The default text is set in\n * [lang.loading](https://api.highcharts.com/highcharts/lang.loading).\n */\n Chart.prototype.showLoading = function (str) {\n var chart = this,\n options = chart.options,\n loadingOptions = options.loading,\n setLoadingSize = function () {\n if (loadingDiv) {\n css(loadingDiv, {\n left: chart.plotLeft + 'px',\n top: chart.plotTop + 'px',\n width: chart.plotWidth + 'px',\n height: chart.plotHeight + 'px'\n });\n }\n };\n var loadingDiv = chart.loadingDiv,\n loadingSpan = chart.loadingSpan;\n // create the layer at the first call\n if (!loadingDiv) {\n chart.loadingDiv = loadingDiv = createElement('div', {\n className: 'highcharts-loading highcharts-loading-hidden'\n }, null, chart.container);\n }\n if (!loadingSpan) {\n chart.loadingSpan = loadingSpan = createElement('span', { className: 'highcharts-loading-inner' }, null, loadingDiv);\n addEvent(chart, 'redraw', setLoadingSize); // #1080\n }\n loadingDiv.className = 'highcharts-loading';\n // Update text\n AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));\n if (!chart.styledMode) {\n // Update visuals\n css(loadingDiv, extend(loadingOptions.style, {\n zIndex: 10\n }));\n css(loadingSpan, loadingOptions.labelStyle);\n // Show it\n if (!chart.loadingShown) {\n css(loadingDiv, {\n opacity: 0,\n display: ''\n });\n animate(loadingDiv, {\n opacity: loadingOptions.style.opacity || 0.5\n }, {\n duration: loadingOptions.showDuration || 0\n });\n }\n }\n chart.loadingShown = true;\n setLoadingSize();\n };\n /**\n * Hide the loading layer.\n *\n * @see Highcharts.Chart#showLoading\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#hideLoading\n */\n Chart.prototype.hideLoading = function () {\n var options = this.options,\n loadingDiv = this.loadingDiv;\n if (loadingDiv) {\n loadingDiv.className =\n 'highcharts-loading highcharts-loading-hidden';\n if (!this.styledMode) {\n animate(loadingDiv, {\n opacity: 0\n }, {\n duration: options.loading.hideDuration || 100,\n complete: function () {\n css(loadingDiv, { display: 'none' });\n }\n });\n }\n }\n this.loadingShown = false;\n };\n /**\n * A generic function to update any element of the chart. Elements can be\n * enabled and disabled, moved, re-styled, re-formatted etc.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](https://api.highcharts.com/highcharts/xAxis),\n * [yAxis](https://api.highcharts.com/highcharts/yAxis) or\n * [series](https://api.highcharts.com/highcharts/series). For these\n * collections, an `id` option is used to map the new option set to an\n * existing object. If an existing object of the same id is not found, the\n * corresponding item is updated. So for example, running `chart.update`\n * with a series item without an id, will cause the existing chart's series\n * with the same index in the series array to be updated. When the\n * `oneToOne` parameter is true, `chart.update` will also take care of\n * adding and removing items from the collection. Read more under the\n * parameter description below.\n *\n * Note that when changing series data, `chart.update` may mutate the passed\n * data options.\n *\n * See also the\n * [responsive option set](https://api.highcharts.com/highcharts/responsive).\n * Switching between `responsive.rules` basically runs `chart.update` under\n * the hood.\n *\n * @sample highcharts/members/chart-update/\n * Update chart geometry\n *\n * @function Highcharts.Chart#update\n *\n * @param {Highcharts.Options} options\n * A configuration object for the new chart options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n *\n * @param {boolean} [oneToOne=false]\n * When `true`, the `series`, `xAxis`, `yAxis` and `annotations`\n * collections will be updated one to one, and items will be either\n * added or removed to match the new updated options. For example,\n * if the chart has two series and we call `chart.update` with a\n * configuration containing three series, one will be added. If we\n * call `chart.update` with one series, one will be removed. Setting\n * an empty `series` array will remove all series, but leaving out\n * the`series` property will leave all series untouched. If the\n * series have id's, the new series options will be matched by id,\n * and the remaining ones removed.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Chart#event:update\n * @emits Highcharts.Chart#event:afterUpdate\n */\n Chart.prototype.update = function (options, redraw, oneToOne, animation) {\n var chart = this,\n adders = {\n credits: 'addCredits',\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n },\n isResponsiveOptions = options.isResponsiveOptions,\n itemsForRemoval = [];\n var updateAllAxes,\n updateAllSeries,\n runSetSize;\n fireEvent(chart, 'update', { options: options });\n // If there are responsive rules in action, undo the responsive rules\n // before we apply the updated options and replay the responsive rules\n // on top from the chart.redraw function (#9617).\n if (!isResponsiveOptions) {\n chart.setResponsive(false, true);\n }\n options = cleanRecursively(options, chart.options);\n chart.userOptions = merge(chart.userOptions, options);\n // If the top-level chart option is present, some special updates are\n // required\n var optionsChart = options.chart;\n if (optionsChart) {\n merge(true, chart.options.chart, optionsChart);\n // Setter function\n if ('className' in optionsChart) {\n chart.setClassName(optionsChart.className);\n }\n if ('reflow' in optionsChart) {\n chart.setReflow(optionsChart.reflow);\n }\n if ('inverted' in optionsChart ||\n 'polar' in optionsChart ||\n 'type' in optionsChart) {\n // Parse options.chart.inverted and options.chart.polar together\n // with the available series.\n chart.propFromSeries();\n updateAllAxes = true;\n }\n if ('alignTicks' in optionsChart) { // #6452\n updateAllAxes = true;\n }\n if ('events' in optionsChart) {\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n }\n objectEach(optionsChart, function (val, key) {\n if (chart.propsRequireUpdateSeries.indexOf('chart.' + key) !==\n -1) {\n updateAllSeries = true;\n }\n // Only dirty box\n if (chart.propsRequireDirtyBox.indexOf(key) !== -1) {\n chart.isDirtyBox = true;\n }\n // Chart setSize\n if (chart.propsRequireReflow.indexOf(key) !== -1) {\n if (isResponsiveOptions) {\n chart.isDirtyBox = true;\n }\n else {\n runSetSize = true;\n }\n }\n });\n if (!chart.styledMode && optionsChart.style) {\n chart.renderer.setStyle(chart.options.chart.style || {});\n }\n }\n // Moved up, because tooltip needs updated plotOptions (#6218)\n if (!chart.styledMode && options.colors) {\n this.options.colors = options.colors;\n }\n if (options.time) {\n // Maintaining legacy global time. If the chart is instanciated\n // first with global time, then updated with time options, we need\n // to create a new Time instance to avoid mutating the global time\n // (#10536).\n if (this.time === defaultTime) {\n this.time = new Time(options.time);\n }\n // If we're updating, the time class is different from other chart\n // classes (chart.legend, chart.tooltip etc) in that it doesn't know\n // about the chart. The other chart[something].update functions also\n // set the chart.options[something]. For the time class however we\n // need to update the chart options separately. #14230.\n merge(true, chart.options.time, options.time);\n }\n // Some option stuctures correspond one-to-one to chart objects that\n // have update methods, for example\n // options.credits => chart.credits\n // options.legend => chart.legend\n // options.title => chart.title\n // options.tooltip => chart.tooltip\n // options.subtitle => chart.subtitle\n // options.mapNavigation => chart.mapNavigation\n // options.navigator => chart.navigator\n // options.scrollbar => chart.scrollbar\n objectEach(options, function (val, key) {\n if (chart[key] &&\n typeof chart[key].update === 'function') {\n chart[key].update(val, false);\n // If a one-to-one object does not exist, look for an adder function\n }\n else if (typeof chart[adders[key]] === 'function') {\n chart[adders[key]](val);\n // Else, just merge the options. For nodes like loading, noData,\n // plotOptions\n }\n else if (key !== 'colors' &&\n chart.collectionsWithUpdate.indexOf(key) === -1) {\n merge(true, chart.options[key], options[key]);\n }\n if (key !== 'chart' &&\n chart.propsRequireUpdateSeries.indexOf(key) !== -1) {\n updateAllSeries = true;\n }\n });\n // Setters for collections. For axes and series, each item is referred\n // by an id. If the id is not found, it defaults to the corresponding\n // item in the collection, so setting one series without an id, will\n // update the first series in the chart. Setting two series without\n // an id will update the first and the second respectively (#6019)\n // chart.update and responsive.\n this.collectionsWithUpdate.forEach(function (coll) {\n var indexMap;\n if (options[coll]) {\n // In stock charts, the navigator series are also part of the\n // chart.series array, but those series should not be handled\n // here (#8196) and neither should the navigator axis (#9671).\n indexMap = [];\n chart[coll].forEach(function (s, i) {\n if (!s.options.isInternal) {\n indexMap.push(pick(s.options.index, i));\n }\n });\n splat(options[coll]).forEach(function (newOptions, i) {\n var hasId = defined(newOptions.id);\n var item;\n // Match by id\n if (hasId) {\n item = chart.get(newOptions.id);\n }\n // No match by id found, match by index instead\n if (!item && chart[coll]) {\n item = chart[coll][indexMap ? indexMap[i] : i];\n // Check if we grabbed an item with an exising but\n // different id (#13541)\n if (item && hasId && defined(item.options.id)) {\n item = void 0;\n }\n }\n if (item && item.coll === coll) {\n item.update(newOptions, false);\n if (oneToOne) {\n item.touched = true;\n }\n }\n // If oneToOne and no matching item is found, add one\n if (!item && oneToOne && chart.collectionsWithInit[coll]) {\n chart.collectionsWithInit[coll][0].apply(chart, \n // [newOptions, ...extraArguments, redraw=false]\n [\n newOptions\n ].concat(\n // Not all initializers require extra args\n chart.collectionsWithInit[coll][1] || []).concat([\n false\n ])).touched = true;\n }\n });\n // Add items for removal\n if (oneToOne) {\n chart[coll].forEach(function (item) {\n if (!item.touched && !item.options.isInternal) {\n itemsForRemoval.push(item);\n }\n else {\n delete item.touched;\n }\n });\n }\n }\n });\n itemsForRemoval.forEach(function (item) {\n if (item.chart && item.remove) { // #9097, avoid removing twice\n item.remove(false);\n }\n });\n if (updateAllAxes) {\n chart.axes.forEach(function (axis) {\n axis.update({}, false);\n });\n }\n // Certain options require the whole series structure to be thrown away\n // and rebuilt\n if (updateAllSeries) {\n chart.getSeriesOrderByLinks().forEach(function (series) {\n // Avoid removed navigator series\n if (series.chart) {\n series.update({}, false);\n }\n }, this);\n }\n // Update size. Redraw is forced.\n var newWidth = optionsChart && optionsChart.width;\n var newHeight = optionsChart && (isString(optionsChart.height) ?\n relativeLength(optionsChart.height,\n newWidth || chart.chartWidth) :\n optionsChart.height);\n if (\n // In this case, run chart.setSize with newWidth and newHeight which\n // are undefined, only for reflowing chart elements because margin\n // or spacing has been set (#8190)\n runSetSize ||\n // In this case, the size is actually set\n (isNumber(newWidth) && newWidth !== chart.chartWidth) ||\n (isNumber(newHeight) && newHeight !== chart.chartHeight)) {\n chart.setSize(newWidth, newHeight, animation);\n }\n else if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n fireEvent(chart, 'afterUpdate', {\n options: options,\n redraw: redraw,\n animation: animation\n });\n };\n /**\n * Shortcut to set the subtitle options. This can also be done from {@link\n * Chart#update} or {@link Chart#setTitle}.\n *\n * @function Highcharts.Chart#setSubtitle\n *\n * @param {Highcharts.SubtitleOptions} options\n * New subtitle options. The subtitle text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setSubtitle = function (options, redraw) {\n this.applyDescription('subtitle', options);\n this.layOutTitles(redraw);\n };\n /**\n * Set the caption options. This can also be done from {@link\n * Chart#update}.\n *\n * @function Highcharts.Chart#setCaption\n *\n * @param {Highcharts.CaptionOptions} options\n * New caption options. The caption text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setCaption = function (options, redraw) {\n this.applyDescription('caption', options);\n this.layOutTitles(redraw);\n };\n /**\n * Display the zoom button, so users can reset zoom to the default view\n * settings.\n *\n * @function Highcharts.Chart#showResetZoom\n *\n * @emits Highcharts.Chart#event:afterShowResetZoom\n * @emits Highcharts.Chart#event:beforeShowResetZoom\n */\n Chart.prototype.showResetZoom = function () {\n var chart = this,\n lang = defaultOptions.lang,\n btnOptions = chart.options.chart.zooming.resetButton,\n theme = btnOptions.theme,\n alignTo = (btnOptions.relativeTo === 'chart' ||\n btnOptions.relativeTo === 'spacingBox' ?\n null :\n 'scrollablePlotBox');\n /**\n * @private\n */\n function zoomOut() {\n chart.zoomOut();\n }\n fireEvent(this, 'beforeShowResetZoom', null, function () {\n chart.resetZoomButton = chart.renderer\n .button(lang.resetZoom, null, null, zoomOut, theme)\n .attr({\n align: btnOptions.position.align,\n title: lang.resetZoomTitle\n })\n .addClass('highcharts-reset-zoom')\n .add()\n .align(btnOptions.position, false, alignTo);\n });\n fireEvent(this, 'afterShowResetZoom');\n };\n /**\n * Zoom the chart out after a user has zoomed in. See also\n * [Axis.setExtremes](/class-reference/Highcharts.Axis#setExtremes).\n *\n * @function Highcharts.Chart#zoomOut\n *\n * @emits Highcharts.Chart#event:selection\n */\n Chart.prototype.zoomOut = function () {\n fireEvent(this, 'selection', { resetSelection: true }, this.zoom);\n };\n /**\n * Zoom into a given portion of the chart given by axis coordinates.\n *\n * @private\n * @function Highcharts.Chart#zoom\n * @param {Highcharts.SelectEventObject} event\n */\n Chart.prototype.zoom = function (event) {\n var chart = this,\n pointer = chart.pointer;\n var displayButton = false,\n hasZoomed;\n // If zoom is called with no arguments, reset the axes\n if (!event || event.resetSelection) {\n chart.axes.forEach(function (axis) {\n hasZoomed = axis.zoom();\n });\n pointer.initiated = false; // #6804\n }\n else { // else, zoom in on all axes\n event.xAxis.concat(event.yAxis).forEach(function (axisData) {\n var axis = axisData.axis,\n isXAxis = axis.isXAxis;\n // don't zoom more than minRange\n if (pointer[isXAxis ? 'zoomX' : 'zoomY'] &&\n (defined(pointer.mouseDownX) &&\n defined(pointer.mouseDownY) &&\n chart.isInsidePlot(pointer.mouseDownX - chart.plotLeft, pointer.mouseDownY - chart.plotTop, { axis: axis })) || !defined(chart.inverted ? pointer.mouseDownX : pointer.mouseDownY)) {\n hasZoomed = axis.zoom(axisData.min, axisData.max);\n if (axis.displayBtn) {\n displayButton = true;\n }\n }\n });\n }\n // Show or hide the Reset zoom button\n var resetZoomButton = chart.resetZoomButton;\n if (displayButton && !resetZoomButton) {\n chart.showResetZoom();\n }\n else if (!displayButton && isObject(resetZoomButton)) {\n chart.resetZoomButton = resetZoomButton.destroy();\n }\n // Redraw\n if (hasZoomed) {\n chart.redraw(pick(chart.options.chart.animation, event && event.animation, chart.pointCount < 100));\n }\n };\n /**\n * Pan the chart by dragging the mouse across the pane. This function is\n * called on mouse move, and the distance to pan is computed from chartX\n * compared to the first chartX position in the dragging operation.\n *\n * @private\n * @function Highcharts.Chart#pan\n * @param {Highcharts.PointerEventObject} e\n * @param {string} panning\n */\n Chart.prototype.pan = function (e, panning) {\n var chart = this,\n hoverPoints = chart.hoverPoints,\n panningOptions = (typeof panning === 'object' ?\n panning :\n {\n enabled: panning,\n type: 'x'\n }),\n chartOptions = chart.options.chart;\n if (chartOptions && chartOptions.panning) {\n chartOptions.panning = panningOptions;\n }\n var type = panningOptions.type;\n var doRedraw;\n fireEvent(this, 'pan', { originalEvent: e }, function () {\n // remove active points for shared tooltip\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n var axes = chart.xAxis;\n if (type === 'xy') {\n axes = axes.concat(chart.yAxis);\n }\n else if (type === 'y') {\n axes = chart.yAxis;\n }\n var nextMousePos = {};\n axes.forEach(function (axis) {\n if (!axis.options.panningEnabled || axis.options.isInternal) {\n return;\n }\n var horiz = axis.horiz, mousePos = e[horiz ? 'chartX' : 'chartY'], mouseDown = horiz ? 'mouseDownX' : 'mouseDownY', startPos = chart[mouseDown], halfPointRange = axis.minPointOffset || 0, pointRangeDirection = (axis.reversed && !chart.inverted) ||\n (!axis.reversed && chart.inverted) ?\n -1 :\n 1, extremes = axis.getExtremes(), panMin = axis.toValue(startPos - mousePos, true) +\n halfPointRange * pointRangeDirection, panMax = axis.toValue(startPos + axis.len - mousePos, true) -\n ((halfPointRange * pointRangeDirection) ||\n (axis.isXAxis && axis.pointRangePadding) ||\n 0), flipped = panMax < panMin, hasVerticalPanning = axis.hasVerticalPanning();\n var newMin = flipped ? panMax : panMin,\n newMax = flipped ? panMin : panMax,\n panningState = axis.panningState,\n spill;\n // General calculations of panning state.\n // This is related to using vertical panning. (#11315).\n if (hasVerticalPanning &&\n !axis.isXAxis && (!panningState || panningState.isDirty)) {\n axis.series.forEach(function (series) {\n var processedData = series.getProcessedData(true),\n dataExtremes = series.getExtremes(processedData.yData,\n true);\n if (!panningState) {\n panningState = {\n startMin: Number.MAX_VALUE,\n startMax: -Number.MAX_VALUE\n };\n }\n if (isNumber(dataExtremes.dataMin) &&\n isNumber(dataExtremes.dataMax)) {\n panningState.startMin = Math.min(pick(series.options.threshold, Infinity), dataExtremes.dataMin, panningState.startMin);\n panningState.startMax = Math.max(pick(series.options.threshold, -Infinity), dataExtremes.dataMax, panningState.startMax);\n }\n });\n }\n var paddedMin = Math.min(pick(panningState && panningState.startMin,\n extremes.dataMin),\n halfPointRange ?\n extremes.min :\n axis.toValue(axis.toPixels(extremes.min) -\n axis.minPixelPadding));\n var paddedMax = Math.max(pick(panningState && panningState.startMax,\n extremes.dataMax),\n halfPointRange ?\n extremes.max :\n axis.toValue(axis.toPixels(extremes.max) +\n axis.minPixelPadding));\n axis.panningState = panningState;\n // It is not necessary to calculate extremes on ordinal axis,\n // because they are already calculated, so we don't want to\n // override them.\n if (!axis.isOrdinal) {\n // If the new range spills over, either to the min or max,\n // adjust the new range.\n spill = paddedMin - newMin;\n if (spill > 0) {\n newMax += spill;\n newMin = paddedMin;\n }\n spill = newMax - paddedMax;\n if (spill > 0) {\n newMax = paddedMax;\n newMin -= spill;\n }\n // Set new extremes if they are actually new\n if (axis.series.length &&\n newMin !== extremes.min &&\n newMax !== extremes.max &&\n newMin >= paddedMin &&\n newMax <= paddedMax) {\n axis.setExtremes(newMin, newMax, false, false, { trigger: 'pan' });\n if (!chart.resetZoomButton &&\n // Show reset zoom button only when both newMin and\n // newMax values are between padded axis range.\n newMin !== paddedMin &&\n newMax !== paddedMax &&\n type.match('y')) {\n chart.showResetZoom();\n axis.displayBtn = false;\n }\n doRedraw = true;\n }\n // set new reference for next run:\n nextMousePos[mouseDown] = mousePos;\n }\n });\n objectEach(nextMousePos, function (pos, down) {\n chart[down] = pos;\n });\n if (doRedraw) {\n chart.redraw(false);\n }\n css(chart.container, { cursor: 'move' });\n });\n };\n return Chart;\n }());\n extend(Chart.prototype, {\n // Hook for adding callbacks in modules\n callbacks: [],\n /**\n * These collections (arrays) implement `Chart.addSomethig` method used in\n * chart.update() to create new object in the collection. Equivalent for\n * deleting is resolved by simple `Somethig.remove()`.\n *\n * Note: We need to define these references after initializers are bound to\n * chart's prototype.\n *\n * @private\n */\n collectionsWithInit: {\n // collectionName: [ initializingMethod, [extraArguments] ]\n xAxis: [Chart.prototype.addAxis, [true]],\n yAxis: [Chart.prototype.addAxis, [false]],\n series: [Chart.prototype.addSeries]\n },\n /**\n * These collections (arrays) implement update() methods with support for\n * one-to-one option.\n * @private\n */\n collectionsWithUpdate: [\n 'xAxis',\n 'yAxis',\n 'series'\n ],\n /**\n * These properties cause isDirtyBox to be set to true when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireDirtyBox: [\n 'backgroundColor',\n 'borderColor',\n 'borderWidth',\n 'borderRadius',\n 'plotBackgroundColor',\n 'plotBackgroundImage',\n 'plotBorderColor',\n 'plotBorderWidth',\n 'plotShadow',\n 'shadow'\n ],\n /**\n * These properties require a full reflow of chart elements, best\n * implemented through running `Chart.setSize` internally (#8190).\n * @private\n */\n propsRequireReflow: [\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'spacing',\n 'spacingTop',\n 'spacingRight',\n 'spacingBottom',\n 'spacingLeft'\n ],\n /**\n * These properties cause all series to be updated when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireUpdateSeries: [\n 'chart.inverted',\n 'chart.polar',\n 'chart.ignoreHiddenSeries',\n 'chart.type',\n 'colors',\n 'plotOptions',\n 'time',\n 'tooltip'\n ]\n });\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback for chart constructors.\n *\n * @callback Highcharts.ChartCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * Created chart.\n */\n /**\n * Format a number and return a string based on input settings.\n *\n * @callback Highcharts.NumberFormatterCallbackFunction\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string} The formatted number.\n */\n /**\n * The chart title. The title has an `update` method that allows modifying the\n * options directly or indirectly via `chart.update`.\n *\n * @interface Highcharts.TitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the title.\n *\n * @function Highcharts.TitleObject#update\n *\n * @param {Highcharts.TitleOptions} titleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the title is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.SubtitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the subtitle.\n *\n * @function Highcharts.SubtitleObject#update\n *\n * @param {Highcharts.SubtitleOptions} subtitleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the subtitle is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * The chart caption. The caption has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.CaptionObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the caption.\n *\n * @function Highcharts.CaptionObject#update\n *\n * @param {Highcharts.CaptionOptions} captionOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the caption is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * @interface Highcharts.ChartIsInsideOptionsObject\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#axis\n * @type {Highcharts.Axis|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreX\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreY\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#paneCoordinates\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#series\n * @type {Highcharts.Series|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#visiblePlotOnly\n * @type {boolean|undefined}\n */\n ''; // keeps doclets above in JS file\n\n return Chart;\n });\n _registerModule(_modules, 'Core/Legend/LegendSymbol.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Namespace\n *\n * */\n var LegendSymbol;\n (function (LegendSymbol) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawLineMarker\n *\n * @param {Highcharts.Legend} legend\n * The legend object.\n */\n function drawLineMarker(legend) {\n var legendItem = this.legendItem = this.legendItem || {},\n options = this.options,\n symbolWidth = legend.symbolWidth,\n symbolHeight = legend.symbolHeight,\n generalRadius = symbolHeight / 2,\n renderer = this.chart.renderer,\n legendItemGroup = legendItem.group,\n verticalCenter = legend.baseline -\n Math.round(legend.fontMetrics.b * 0.3);\n var attr = {},\n legendSymbol,\n markerOptions = options.marker,\n lineSizer = 0;\n // Draw the line\n if (!this.chart.styledMode) {\n attr = {\n 'stroke-width': Math.min(options.lineWidth || 0, 24)\n };\n if (options.dashStyle) {\n attr.dashstyle = options.dashStyle;\n }\n else if (options.linecap !== 'square') {\n attr['stroke-linecap'] = 'round';\n }\n }\n legendItem.line = renderer\n .path()\n .addClass('highcharts-graph')\n .attr(attr)\n .add(legendItemGroup);\n if (attr['stroke-linecap']) {\n lineSizer = Math.min(legendItem.line.strokeWidth(), symbolWidth) / 2;\n }\n legendItem.line\n .attr({\n d: [\n ['M', lineSizer, verticalCenter],\n ['L', symbolWidth - lineSizer, verticalCenter]\n ]\n });\n // Draw the marker\n if (markerOptions && markerOptions.enabled !== false && symbolWidth) {\n // Do not allow the marker to be larger than the symbolHeight\n var radius = Math.min(pick(markerOptions.radius,\n generalRadius),\n generalRadius);\n // Restrict symbol markers size\n if (this.symbol.indexOf('url') === 0) {\n markerOptions = merge(markerOptions, {\n width: symbolHeight,\n height: symbolHeight\n });\n radius = 0;\n }\n legendItem.symbol = legendSymbol = renderer\n .symbol(this.symbol, (symbolWidth / 2) - radius, verticalCenter - radius, 2 * radius, 2 * radius, extend({ context: 'legend' }, markerOptions))\n .addClass('highcharts-point')\n .add(legendItemGroup);\n legendSymbol.isMarker = true;\n }\n }\n LegendSymbol.drawLineMarker = drawLineMarker;\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawRectangle\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Point|Highcharts.Series} item\n * The series (this) or point\n */\n function drawRectangle(legend, item) {\n var legendItem = item.legendItem || {},\n options = legend.options,\n symbolHeight = legend.symbolHeight,\n square = options.squareSymbol,\n symbolWidth = square ? symbolHeight : legend.symbolWidth;\n legendItem.symbol = this.chart.renderer\n .rect(square ? (legend.symbolWidth - symbolHeight) / 2 : 0, legend.baseline - symbolHeight + 1, // #3988\n symbolWidth, symbolHeight, pick(legend.options.symbolRadius, symbolHeight / 2))\n .addClass('highcharts-point')\n .attr({\n zIndex: 3\n })\n .add(legendItem.group);\n }\n LegendSymbol.drawRectangle = drawRectangle;\n })(LegendSymbol || (LegendSymbol = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LegendSymbol;\n });\n _registerModule(_modules, 'Core/Series/SeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n var seriesDefaults = {\n // base series options\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * Pixel width of the graph line.\n *\n * @see In styled mode, the line stroke-width can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-general/\n * On all series\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-specific/\n * On one single series\n *\n * @product highcharts highstock\n *\n * @private\n */\n lineWidth: 2,\n /**\n * For some series, there is a limit that shuts down animation\n * by default when the total number of points in the chart is too high.\n * For example, for a column chart and its derivatives, animation does\n * not run if there is more than 250 points totally. To disable this\n * cap, set `animationLimit` to `Infinity`. This option works if animation\n * is fired on individual points, not on a group of points like e.g. during\n * the initial animation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animationlimit/\n * Animation limit on updating individual points\n *\n * @type {number}\n * @apioption plotOptions.series.animationLimit\n */\n /**\n * Allow this series' points to be selected by clicking on the graphic\n * (columns, point markers, pie slices, map areas etc).\n *\n * The selected points can be handled by point select and unselect\n * events, or collectively by the [getSelectedPoints\n * ](/class-reference/Highcharts.Chart#getSelectedPoints) function.\n *\n * And alternative way of selecting points is through dragging.\n *\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-pie/\n * Pie\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @since 1.2.0\n *\n * @private\n */\n allowPointSelect: false,\n /**\n * When true, each point or column edge is rounded to its nearest pixel\n * in order to render sharp on screen. In some cases, when there are a\n * lot of densely packed columns, this leads to visible difference\n * in column widths or distance between columns. In these cases,\n * setting `crisp` to `false` may look better, even though each column\n * is rendered blurry.\n *\n * @sample {highcharts} highcharts/plotoptions/column-crisp-false/\n * Crisp is false\n *\n * @since 5.0.10\n * @product highcharts highstock gantt\n *\n * @private\n */\n crisp: true,\n /**\n * If true, a checkbox is displayed next to the legend item to allow\n * selecting the series. The state of the checkbox is determined by\n * the `selected` option.\n *\n * @productdesc {highmaps}\n * Note that if a `colorAxis` is defined, the color axis is represented\n * in the legend, not the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showcheckbox-true/\n * Show select box\n *\n * @since 1.2.0\n *\n * @private\n */\n showCheckbox: false,\n /**\n * Enable or disable the initial animation when a series is displayed.\n * The animation can also be set as a configuration object. Please\n * note that this option only applies to the initial animation of the\n * series itself. For other animations, see [chart.animation](\n * #chart.animation) and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds. (Defaults to\n * `1000`)\n *\n * - `easing`: Can be a string reference to an easing function set on\n * the `Math` object or a function. See the _Custom easing function_\n * demo below. (Defaults to `easeInOutSine`)\n *\n * Due to poor performance, animation is disabled in old IE browsers\n * for several chart types.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animation-disabled/\n * Animation disabled\n * @sample {highcharts} highcharts/plotoptions/series-animation-slower/\n * Slower animation\n * @sample {highcharts} highcharts/plotoptions/series-animation-easing/\n * Custom easing function\n * @sample {highstock} stock/plotoptions/animation-slower/\n * Slower animation\n * @sample {highstock} stock/plotoptions/animation-easing/\n * Custom easing function\n * @sample {highmaps} maps/plotoptions/series-animation-true/\n * Animation enabled on map series\n * @sample {highmaps} maps/plotoptions/mapbubble-animation-false/\n * Disabled on mapbubble series\n *\n * @type {boolean|Highcharts.AnimationOptionsObject}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n *\n * @private\n */\n animation: {\n /** @ignore-option */\n duration: 1000\n },\n /**\n * An additional class name to apply to the series' graphical elements.\n * This option does not replace default class names of the graphical\n * element. Changes to the series' color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.className\n */\n /**\n * Disable this option to allow series rendering in the whole plotting\n * area.\n *\n * **Note:** Clipping should be always enabled when\n * [chart.zoomType](#chart.zoomType) is set\n *\n * @sample {highcharts} highcharts/plotoptions/series-clip/\n * Disabled clipping\n *\n * @default true\n * @type {boolean}\n * @since 3.0.0\n * @apioption plotOptions.series.clip\n */\n /**\n * The main color of the series. In line type series it applies to the\n * line and the point markers unless otherwise specified. In bar type\n * series it applies to the bars unless a color is specified per point.\n * The default value is pulled from the `options.colors` array.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @productdesc {highmaps}\n * In maps, the series color is rarely used, as most choropleth maps use\n * the color to denote the value of each point. The series color can\n * however be used in a map with multiple series holding categorized\n * data.\n *\n * @sample {highcharts} highcharts/plotoptions/series-color-general/\n * General plot option\n * @sample {highcharts} highcharts/plotoptions/series-color-specific/\n * One specific series\n * @sample {highcharts} highcharts/plotoptions/series-color-area/\n * Area color\n * @sample {highcharts} highcharts/series/infographic/\n * Pattern fill\n * @sample {highmaps} maps/demo/category-map/\n * Category map by multiple series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.color\n */\n /**\n * Styled mode only. A specific color index to use for the series, so its\n * graphic representations are given the class name `highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/css/colorindex/\n * Series and point color index\n *\n * @type {number}\n * @since 5.0.0\n * @apioption plotOptions.series.colorIndex\n */\n /**\n * Whether to connect a graph line across null points, or render a gap\n * between the two points on either side of the null.\n *\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.connectNulls\n */\n /**\n * You can set the cursor to \"pointer\" if you have click events attached\n * to the series, to signal to the user that the points and lines can\n * be clicked.\n *\n * In styled mode, the series cursor can be set with the same classes\n * as listed under [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-cursor-line/\n * On line graph\n * @sample {highcharts} highcharts/plotoptions/series-cursor-column/\n * On columns\n * @sample {highcharts} highcharts/plotoptions/series-cursor-scatter/\n * On scatter markers\n * @sample {highstock} stock/plotoptions/cursor/\n * Pointer on a line graph\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @type {string|Highcharts.CursorValue}\n * @apioption plotOptions.series.cursor\n */\n /**\n * A reserved subspace to store options and values for customized\n * functionality. Here you can add additional data for your own event\n * callbacks and formatter callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption plotOptions.series.custom\n */\n /**\n * Name of the dash style to use for the graph, or for some series types\n * the outline of each shape.\n *\n * In styled mode, the\n * [stroke dash-array](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/series-dashstyle/)\n * can be set with the same classes as listed under\n * [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle/\n * Chart suitable for printing in black and white\n * @sample {highstock} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} maps/plotoptions/series-dashstyle/\n * Dotted borders on a map\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 2.1\n * @apioption plotOptions.series.dashStyle\n */\n /**\n * A description of the series to add to the screen reader information\n * about the series.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption plotOptions.series.description\n */\n /**\n * Options for the series data sorting.\n *\n * @type {Highcharts.DataSortingOptionsObject}\n * @since 8.0.0\n * @product highcharts highstock\n * @apioption plotOptions.series.dataSorting\n */\n /**\n * Enable or disable data sorting for the series. Use [xAxis.reversed](\n * #xAxis.reversed) to change the sorting order.\n *\n * @sample {highcharts} highcharts/datasorting/animation/\n * Data sorting in scatter-3d\n * @sample {highcharts} highcharts/datasorting/labels-animation/\n * Axis labels animation\n * @sample {highcharts} highcharts/datasorting/dependent-sorting/\n * Dependent series sorting\n * @sample {highcharts} highcharts/datasorting/independent-sorting/\n * Independent series sorting\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.enabled\n */\n /**\n * Whether to allow matching points by name in an update. If this option\n * is disabled, points will be matched by order.\n *\n * @sample {highcharts} highcharts/datasorting/match-by-name/\n * Enabled match by name\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.matchByName\n */\n /**\n * Determines what data value should be used to sort by.\n *\n * @sample {highcharts} highcharts/datasorting/sort-key/\n * Sort key as `z` value\n *\n * @type {string}\n * @since 8.0.0\n * @default y\n * @apioption plotOptions.series.dataSorting.sortKey\n */\n /**\n * Enable or disable the mouse tracking for a specific series. This\n * includes point tooltips and click events on graphs and points. For\n * large datasets it improves performance.\n *\n * @sample {highcharts} highcharts/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n * @sample {highmaps} maps/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.enableMouseTracking\n */\n /**\n * Whether to use the Y extremes of the total chart width or only the\n * zoomed area when zooming in on parts of the X axis. By default, the\n * Y axis adjusts to the min and max of the visible data. Cartesian\n * series only.\n *\n * @type {boolean}\n * @default false\n * @since 4.1.6\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.getExtremesFromAll\n */\n /**\n * An array specifying which option maps to which key in the data point\n * array. This makes it convenient to work with unstructured data arrays\n * from different sources.\n *\n * @see [series.data](#series.line.data)\n *\n * @sample {highcharts|highstock} highcharts/series/data-keys/\n * An extended data array with keys\n * @sample {highcharts|highstock} highcharts/series/data-nested-keys/\n * Nested keys used to access object properties\n *\n * @type {Array}\n * @since 4.1.6\n * @apioption plotOptions.series.keys\n */\n /**\n * The line cap used for line ends and line joins on the graph.\n *\n * @sample highcharts/series-line/linecap/\n * Line cap comparison\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @product highcharts highstock\n * @apioption plotOptions.series.linecap\n */\n /**\n * The [id](#series.id) of another series to link to. Additionally,\n * the value can be \":previous\" to link to the previous series. When\n * two series are linked, only the first one appears in the legend.\n * Toggling the visibility of this also toggles the linked series.\n *\n * If master series uses data sorting and linked series does not have\n * its own sorting definition, the linked series will be sorted in the\n * same order as the master one.\n *\n * @sample {highcharts|highstock} highcharts/demo/arearange-line/\n * Linked series\n *\n * @type {string}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.linkedTo\n */\n /**\n * Options for the corresponding navigator series if `showInNavigator`\n * is `true` for this series. Available options are the same as any\n * series, documented at [plotOptions](#plotOptions.series) and\n * [series](#series).\n *\n * These options are merged with options in [navigator.series](\n * #navigator.series), and will take precedence if the same option is\n * defined both places.\n *\n * @see [navigator.series](#navigator.series)\n *\n * @type {Highcharts.PlotSeriesOptions}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.navigatorOptions\n */\n /**\n * The color for the parts of the graph or points that are below the\n * [threshold](#plotOptions.series.threshold). Note that `zones` takes\n * precedence over the negative color. Using `negativeColor` is\n * equivalent to applying a zone with value of 0.\n *\n * @see In styled mode, a negative color is applied by setting this option\n * to `true` combined with the `.highcharts-negative` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highcharts} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Styled mode\n * @sample {highstock} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highstock} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highmaps} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highmaps} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @apioption plotOptions.series.negativeColor\n */\n /**\n * Same as\n * [accessibility.series.descriptionFormatter](#accessibility.series.descriptionFormatter),\n * but for an individual series. Overrides the chart wide configuration.\n *\n * @type {Function}\n * @since 5.0.12\n * @apioption plotOptions.series.pointDescriptionFormatter\n */\n /**\n * If no x values are given for the points in a series, `pointInterval`\n * defines the interval of the x values. For example, if a series\n * contains one value every decade starting from year 0, set\n * `pointInterval` to `10`. In true `datetime` axes, the `pointInterval`\n * is set in milliseconds.\n *\n * It can be also be combined with `pointIntervalUnit` to draw irregular\n * time intervals.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point, and the `pointInterval` is added x times to the `pointStart`\n * setting.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime X axis\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 1\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointInterval\n */\n /**\n * On datetime series, this allows for setting the\n * [pointInterval](#plotOptions.series.pointInterval) to irregular time\n * units, `day`, `month` and `year`. A day is usually the same as 24\n * hours, but `pointIntervalUnit` also takes the DST crossover into\n * consideration when dealing with local time. Combine this option with\n * `pointInterval` to draw weeks, quarters, 6 months, 10 years etc.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n * @sample {highstock} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n *\n * @type {string}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @validvalue [\"day\", \"month\", \"year\"]\n * @apioption plotOptions.series.pointIntervalUnit\n */\n /**\n * Possible values: `\"on\"`, `\"between\"`, `number`.\n *\n * In a column chart, when pointPlacement is `\"on\"`, the point will not\n * create any padding of the X axis. In a polar column chart this means\n * that the first column points directly north. If the pointPlacement is\n * `\"between\"`, the columns will be laid out between ticks. This is\n * useful for example for visualising an amount between two points in\n * time or in a certain sector of a polar chart.\n *\n * Since Highcharts 3.0.2, the point placement can also be numeric,\n * where 0 is on the axis value, -0.5 is between this value and the\n * previous, and 0.5 is between this value and the next. Unlike the\n * textual options, numeric point placement options won't affect axis\n * padding.\n *\n * Note that pointPlacement needs a [pointRange](\n * #plotOptions.series.pointRange) to work. For column series this is\n * computed, but for line-type series it needs to be set.\n *\n * For the `xrange` series type and gantt charts, if the Y axis is a\n * category axis, the `pointPlacement` applies to the Y axis rather than\n * the (typically datetime) X axis.\n *\n * Defaults to `undefined` in cartesian charts, `\"between\"` in polar\n * charts.\n *\n * @see [xAxis.tickmarkPlacement](#xAxis.tickmarkPlacement)\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-between/\n * Between in a column chart\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-numeric/\n * Numeric placement for custom layout\n * @sample {highcharts|highstock} maps/plotoptions/heatmap-pointplacement/\n * Placement in heatmap\n *\n * @type {string|number}\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointPlacement\n */\n /**\n * If no x values are given for the points in a series, pointStart\n * defines on what value to start. For example, if a series contains one\n * yearly value starting from 1945, set pointStart to 1945.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point. The x value from the point options is multiplied by\n * `pointInterval` and added to `pointStart` to produce a modified x\n * value.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-linear/\n * Linear\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointStart\n */\n /**\n * When true, X values in the data set are relative to the current\n * `pointStart`, `pointInterval` and `pointIntervalUnit` settings. This\n * allows compression of the data for datasets with irregular X values.\n *\n * The real X values are computed on the formula `f(x) = ax + b`, where\n * `a` is the `pointInterval` (optionally with a time unit given by\n * `pointIntervalUnit`), and `b` is the `pointStart`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative X value\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative X value\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.relativeXValue\n */\n /**\n * Whether to select the series initially. If `showCheckbox` is true,\n * the checkbox next to the series name in the legend will be checked\n * for a selected series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-selected/\n * One out of two series selected\n *\n * @type {boolean}\n * @default false\n * @since 1.2.0\n * @apioption plotOptions.series.selected\n */\n /**\n * Whether to apply a drop shadow to the graph line. Since 2.3 the\n * shadow can be an object configuration containing `color`, `offsetX`,\n * `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-shadow/\n * Shadow enabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @apioption plotOptions.series.shadow\n */\n /**\n * Whether to display this particular series or series type in the\n * legend. Standalone series are shown in legend by default, and linked\n * series are not. Since v7.2.0 it is possible to show series that use\n * colorAxis by setting this option to `true`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @type {boolean}\n * @apioption plotOptions.series.showInLegend\n */\n /**\n * Whether or not to show the series in the navigator. Takes precedence\n * over [navigator.baseSeries](#navigator.baseSeries) if defined.\n *\n * @type {boolean}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.showInNavigator\n */\n /**\n * If set to `true`, the accessibility module will skip past the points\n * in this series for keyboard navigation.\n *\n * @type {boolean}\n * @since 5.0.12\n * @apioption plotOptions.series.skipKeyboardNavigation\n */\n /**\n * Whether to stack the values of each series on top of each other.\n * Possible values are `undefined` to disable, `\"normal\"` to stack by\n * value or `\"percent\"`.\n *\n * When stacking is enabled, data must be sorted\n * in ascending X order.\n *\n * Some stacking options are related to specific series types. In the\n * streamgraph series type, the stacking option is set to `\"stream\"`.\n * The second one is `\"overlap\"`, which only applies to waterfall\n * series.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts} highcharts/plotoptions/series-stacking-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-normal-stacking\n * Waterfall with normal stacking\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-overlap-stacking\n * Waterfall with overlap stacking\n * @sample {highstock} stock/plotoptions/stacking/\n * Area\n *\n * @type {string}\n * @product highcharts highstock\n * @validvalue [\"normal\", \"overlap\", \"percent\", \"stream\"]\n * @apioption plotOptions.series.stacking\n */\n /**\n * Whether to apply steps to the line. Possible values are `left`,\n * `center` and `right`.\n *\n * @sample {highcharts} highcharts/plotoptions/line-step/\n * Different step line options\n * @sample {highcharts} highcharts/plotoptions/area-step/\n * Stepped, stacked area\n * @sample {highstock} stock/plotoptions/line-step/\n * Step line\n *\n * @type {string}\n * @since 1.2.5\n * @product highcharts highstock\n * @validvalue [\"left\", \"center\", \"right\"]\n * @apioption plotOptions.series.step\n */\n /**\n * The threshold, also called zero level or base level. For line type\n * series this is only used in conjunction with\n * [negativeColor](#plotOptions.series.negativeColor).\n *\n * @see [softThreshold](#plotOptions.series.softThreshold).\n *\n * @type {number|null}\n * @default 0\n * @since 3.0\n * @product highcharts highstock\n * @apioption plotOptions.series.threshold\n */\n /**\n * Set the initial visibility of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-visible/\n * Two series, one hidden and one visible\n * @sample {highstock} stock/plotoptions/series-visibility/\n * Hidden series\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.visible\n */\n /**\n * Defines the Axis on which the zones are applied.\n *\n * @see [zones](#plotOptions.series.zones)\n *\n * @sample {highcharts} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n * @sample {highstock} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n *\n * @type {string}\n * @default y\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zoneAxis\n */\n /**\n * General event handlers for the series items. These event hooks can\n * also be attached to the series at run time using the\n * `Highcharts.addEvent` function.\n *\n * @declare Highcharts.SeriesEventsOptionsObject\n *\n * @private\n */\n events: {},\n /**\n * Fires after the series has finished its initial animation, or in case\n * animation is disabled, immediately as the series is displayed.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n * @sample {highstock} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n *\n * @type {Highcharts.SeriesAfterAnimateCallbackFunction}\n * @since 4.0\n * @product highcharts highstock gantt\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.afterAnimate\n */\n /**\n * Fires when the checkbox next to the series' name in the legend is\n * clicked. One parameter, `event`, is passed to the function. The state\n * of the checkbox is found by `event.checked`. The checked item is\n * found by `event.item`. Return `false` to prevent the default action\n * which is to toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Highcharts.SeriesCheckboxClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.checkboxClick\n */\n /**\n * Fires when the series is clicked. One parameter, `event`, is passed\n * to the function, containing common event information. Additionally,\n * `event.point` holds a pointer to the nearest point on the graph.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-click/\n * Alert click info\n * @sample {highstock} stock/plotoptions/series-events-click/\n * Alert click info\n * @sample {highmaps} maps/plotoptions/series-events-click/\n * Display click info in subtitle\n *\n * @type {Highcharts.SeriesClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.click\n */\n /**\n * Fires when the series is hidden after chart generation time, either\n * by clicking the legend item or by calling `.hide()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-hide/\n * Alert when the series is hidden by clicking the legend item\n *\n * @type {Highcharts.SeriesHideCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.hide\n */\n /**\n * Fires when the legend item belonging to the series is clicked. One\n * parameter, `event`, is passed to the function. The default action\n * is to toggle the visibility of the series. This can be prevented\n * by returning `false` or calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-legenditemclick/\n * Confirm hiding and showing\n *\n * @type {Highcharts.SeriesLegendItemClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.legendItemClick\n */\n /**\n * Fires when the mouse leaves the graph. One parameter, `event`, is\n * passed to the function, containing common event information. If the\n * [stickyTracking](#plotOptions.series) option is true, `mouseOut`\n * doesn't happen before the mouse enters another graph or leaves the\n * plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOutCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOut\n */\n /**\n * Fires when the mouse enters the graph. One parameter, `event`, is\n * passed to the function, containing common event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOverCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOver\n */\n /**\n * Fires when the series is shown after chart generation time, either\n * by clicking the legend item or by calling `.show()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-show/\n * Alert when the series is shown by clicking the legend item.\n *\n * @type {Highcharts.SeriesShowCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.show\n */\n /**\n * Options for the point markers of line and scatter-like series. Properties\n * like `fillColor`, `lineColor` and `lineWidth` define the visual\n * appearance of the markers. The `symbol` option defines the shape. Other\n * series types, like column series, don't have markers, but have visual\n * options on the series level instead.\n *\n * In styled mode, the markers can be styled with the `.highcharts-point`,\n * `.highcharts-point-hover` and `.highcharts-point-select` class names.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n *\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @private\n */\n marker: {\n /**\n * Enable or disable the point marker. If `undefined`, the markers\n * are hidden when the data is dense, and shown for more widespread\n * data points.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled/\n * Disabled markers\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled-false/\n * Disabled in normal state but enabled on hover\n * @sample {highstock} stock/plotoptions/series-marker/\n * Enabled markers\n *\n * @type {boolean}\n * @default {highcharts} undefined\n * @default {highstock} false\n * @apioption plotOptions.series.marker.enabled\n */\n /**\n * The threshold for how dense the point markers should be before\n * they are hidden, given that `enabled` is not defined. The number\n * indicates the horizontal distance between the two closest points\n * in the series, as multiples of the `marker.radius`. In other\n * words, the default value of 2 means points are hidden if\n * overlapping horizontally.\n *\n * @sample highcharts/plotoptions/series-marker-enabledthreshold\n * A higher threshold\n *\n * @since 6.0.5\n */\n enabledThreshold: 2,\n /**\n * The fill color of the point marker. When `undefined`, the series'\n * or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * White fill\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.fillColor\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `width` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.height\n */\n /**\n * The color of the point marker's outline. When `undefined`, the\n * series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * Inherit from series color (undefined)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * 2px blue marker\n */\n lineWidth: 0,\n /**\n * The radius of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-radius/\n * Bigger markers\n *\n * @default {highstock} 2\n * @default {highcharts} 4\n *\n */\n radius: 4,\n /**\n * A predefined shape or symbol for the marker. When undefined, the\n * symbol is pulled from options.symbols. Other possible values are\n * `'circle'`, `'square'`,`'diamond'`, `'triangle'` and\n * `'triangle-down'`.\n *\n * Additionally, the URL to a graphic can be given on this form:\n * `'url(graphic.png)'`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highstock} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @type {string}\n * @apioption plotOptions.series.marker.symbol\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `height` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.width\n */\n /**\n * States for a single point marker.\n *\n * @declare Highcharts.PointStatesOptionsObject\n */\n states: {\n /**\n * The normal state of a single point marker. Currently only\n * used for setting animation when returning to normal state\n * from hover.\n *\n * @declare Highcharts.PointStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial}\n */\n animation: true\n },\n /**\n * The hover state for a single point marker.\n *\n * @declare Highcharts.PointStatesHoverOptionsObject\n */\n hover: {\n /**\n * Animation when hovering over the marker.\n *\n * @type {boolean|Partial}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Enable or disable the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-enabled/\n * Disabled hover state\n */\n enabled: true,\n /**\n * The fill color of the marker in hover state. When\n * `undefined`, the series' or point's fillColor for normal\n * state is used.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.fillColor\n */\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's lineColor for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linecolor/\n * White fill color, black line color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.lineColor\n */\n /**\n * The width of the point marker's outline. When\n * `undefined`, the series' or point's lineWidth for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linewidth/\n * 3px line width\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.lineWidth\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2 as per the\n * [radiusPlus](#plotOptions.series.marker.states.hover.radiusPlus)\n * option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-radius/\n * 10px radius\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.radius\n */\n /**\n * The number of pixels to increase the radius of the\n * hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n *\n * @since 4.0.3\n */\n radiusPlus: 2,\n /**\n * The additional line width for a hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n *\n * @since 4.0.3\n */\n lineWidthPlus: 1\n },\n /**\n * The appearance of the point marker when selected. In order to\n * allow a point to be selected, set the\n * `series.allowPointSelect` option to true.\n *\n * @declare Highcharts.PointStatesSelectOptionsObject\n */\n select: {\n /**\n * Enable or disable visible feedback for selection.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-enabled/\n * Disabled select state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.marker.states.select.enabled\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-radius/\n * 10px radius for selected points\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.select.radius\n */\n /**\n * The fill color of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-fillcolor/\n * Solid red discs for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n fillColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linecolor/\n * Red line color for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linewidth/\n * 3px line width for selected points\n */\n lineWidth: 2\n }\n }\n },\n /**\n * Properties for each single point.\n *\n * @declare Highcharts.PlotSeriesPointOptions\n *\n * @private\n */\n point: {\n /**\n * Fires when a point is clicked. One parameter, `event`, is passed\n * to the function, containing common event information.\n *\n * If the `series.allowPointSelect` option is true, the default\n * action for the point's click event is to toggle the point's\n * select state. Returning `false` cancels this action.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click/\n * Click marker to alert values\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-column/\n * Click column\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-url/\n * Go to URL\n * @sample {highmaps} maps/plotoptions/series-point-events-click/\n * Click marker to display values\n * @sample {highmaps} maps/plotoptions/series-point-events-click-url/\n * Go to URL\n *\n * @type {Highcharts.PointClickCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.click\n */\n /**\n * Fires when the mouse leaves the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOutCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOut\n */\n /**\n * Fires when the mouse enters the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * Returning `false` cancels the default behavior, which is to show a\n * tooltip for the point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOverCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOver\n */\n /**\n * Fires when the point is removed using the `.remove()` method. One\n * parameter, `event`, is passed to the function. Returning `false`\n * cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n *\n * @type {Highcharts.PointRemoveCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.remove\n */\n /**\n * Fires when the point is selected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-select/\n * Report the last selected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointSelectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.select\n */\n /**\n * Fires when the point is unselected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function.\n * Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-unselect/\n * Report the last unselected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointUnselectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.unselect\n */\n /**\n * Fires when the point is updated programmatically through the\n * `.update()` method. One parameter, `event`, is passed to the\n * function. The new point options can be accessed through\n * `event.options`. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-update/\n * Confirm point updating\n *\n * @type {Highcharts.PointUpdateCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.update\n */\n /**\n * Events for each single point.\n *\n * @declare Highcharts.PointEventsOptionsObject\n */\n events: {}\n },\n /**\n * Options for the series data labels, appearing next to each data\n * point.\n *\n * Since v6.2.0, multiple data labels can be applied to each single\n * point by defining them as an array of configs.\n *\n * In styled mode, the data labels can be styled with the\n * `.highcharts-data-label-box` and `.highcharts-data-label` class names\n * ([see example](https://www.highcharts.com/samples/highcharts/css/series-datalabels)).\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled\n * Data labels enabled\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-multiple\n * Multiple data labels on a bar series\n * @sample {highcharts} highcharts/css/series-datalabels\n * Styled mode example\n * @sample {highmaps} maps/demo/color-axis\n * Choropleth map with data labels\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Using data labels as map markers\n *\n * @type {*|Array<*>}\n * @product highcharts highstock highmaps gantt\n *\n * @private\n */\n dataLabels: {\n /**\n * Enable or disable the initial animation when a series is displayed\n * for the `dataLabels`. The animation can also be set as a\n * configuration object. Please note that this option only applies to\n * the initial animation.\n *\n * For other animations, see [chart.animation](#chart.animation) and the\n * animation parameter under the API methods. The following properties\n * are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n *\n * @type {boolean|Partial}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds. Set to `0` to render the\n * data labels immediately. As `undefined` inherits defer time from the\n * [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation.defer\n */\n /**\n * The alignment of the data label compared to the point. If `right`,\n * the right side of the label should be touching the point. For points\n * with an extent, like columns, the alignments also dictates how to\n * align it inside the box, as given with the\n * [inside](#plotOptions.column.dataLabels.inside) option. Can be one of\n * `left`, `center` or `right`.\n *\n * @sample {highcharts}\n * highcharts/plotoptions/series-datalabels-align-left/ Left\n * aligned\n * @sample {highcharts}\n * highcharts/plotoptions/bar-datalabels-align-inside-bar/ Data\n * labels inside the bar\n *\n * @type {Highcharts.AlignValue|null}\n */\n align: 'center',\n /**\n * Whether to allow data labels to overlap. To make the labels less\n * sensitive for overlapping, the\n * [dataLabels.padding](#plotOptions.series.dataLabels.padding)\n * can be set to 0.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-allowoverlap-false/\n * Don't allow overlap\n *\n * @type {boolean}\n * @default false\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.allowOverlap\n */\n /**\n * The background color or gradient for the data label. Setting it to\n * `auto` will use the point's color.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Data labels as map markers\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.backgroundColor\n */\n /**\n * The border color for the data label. Setting it to `auto` will use\n * the point's color. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderColor\n */\n /**\n * The border radius in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderRadius\n */\n /**\n * The border width in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderWidth\n */\n borderWidth: 0,\n /**\n * A class name for the data label. Particularly in styled mode,\n * this can be used to give each series' or point's data label\n * unique styling. In addition to this option, a default color class\n * name is added so that we can give the labels a contrast text\n * shadow.\n *\n * @sample {highcharts} highcharts/css/data-label-contrast/\n * Contrast text shadow\n * @sample {highcharts} highcharts/css/series-datalabels/\n * Styling by CSS\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.dataLabels.className\n */\n /**\n * This options is deprecated.\n * Use [style.color](#plotOptions.series.dataLabels.style) instead.\n *\n * The text color for the data labels. Defaults to `undefined`. For\n * certain series types, like column or map, the data labels can be\n * drawn inside the points. In this case the data label will be\n * drawn with maximum contrast by default. Additionally, it will be\n * given a `text-outline` style with the opposite color, to further\n * increase the contrast. This can be overridden by setting the\n * `text-outline` style to `none` in the `dataLabels.style` option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-color/\n * Red data labels\n * @sample {highmaps} maps/demo/color-axis/\n * White data labels\n *\n * @see [style.color](#plotOptions.series.dataLabels.style)\n *\n * @type {Highcharts.ColorType}\n * @deprecated 10.3\n * @apioption plotOptions.series.dataLabels.color\n */\n /**\n * Whether to hide data labels that are outside the plot area. By\n * default, the data label is moved inside the plot area according\n * to the\n * [overflow](#plotOptions.series.dataLabels.overflow)\n * option.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.3\n * @apioption plotOptions.series.dataLabels.crop\n */\n /**\n * Whether to defer displaying the data labels until the initial\n * series animation has finished. Setting to `false` renders the\n * data label immediately. If set to `true` inherits the defer\n * time set in [plotOptions.series.animation](#plotOptions.series.animation).\n * If set to a number, a defer time is specified in milliseconds.\n *\n * @sample highcharts/plotoptions/animation-defer\n * Set defer time\n *\n * @since 4.0.0\n * @type {boolean|number}\n * @product highcharts highstock gantt\n */\n defer: true,\n /**\n * Enable or disable the data labels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled/\n * Data labels enabled\n * @sample {highmaps} maps/demo/color-axis/\n * Data labels enabled\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.enabled\n */\n /**\n * A declarative filter to control of which data labels to display.\n * The declarative filter is designed for use when callback\n * functions are not available, like when the chart options require\n * a pure JSON structure or for use with graphical editors. For\n * programmatic control, use the `formatter` instead, and return\n * `undefined` to disable a single data label.\n *\n * @example\n * filter: {\n * property: 'percentage',\n * operator: '>',\n * value: 4\n * }\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome\n * Data labels filtered by percentage\n *\n * @declare Highcharts.DataLabelsFilterOptionsObject\n * @since 6.0.3\n * @apioption plotOptions.series.dataLabels.filter\n */\n /**\n * The operator to compare by. Can be one of `>`, `<`, `>=`, `<=`,\n * `==`, and `===`.\n *\n * @type {string}\n * @validvalue [\">\", \"<\", \">=\", \"<=\", \"==\", \"===\"]\n * @apioption plotOptions.series.dataLabels.filter.operator\n */\n /**\n * The point property to filter by. Point options are passed\n * directly to properties, additionally there are `y` value,\n * `percentage` and others listed under {@link Highcharts.Point}\n * members.\n *\n * @type {string}\n * @apioption plotOptions.series.dataLabels.filter.property\n */\n /**\n * The value to compare against.\n *\n * @type {number}\n * @apioption plotOptions.series.dataLabels.filter.value\n */\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value in the data label\n *\n * @type {string}\n * @default y\n * @default point.value\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that if a\n * `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n */\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n return typeof this.y !== 'number' ?\n '' : numberFormatter(this.y, -1);\n },\n /**\n * For points with an extent, like columns or map areas, whether to\n * align the data label inside the box or to the actual value point.\n * Defaults to `false` in most cases, `true` in stacked columns.\n *\n * @type {boolean}\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.inside\n */\n /**\n * Format for points with the value of null. Works analogously to\n * [format](#plotOptions.series.dataLabels.format). `nullFormat` can\n * be applied only to series which support displaying null points\n * i.e `heatmap` or `tilemap`. Does not work with series that don't\n * display null points, like `line`, `column`, `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {boolean|string}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormat\n */\n /**\n * Callback JavaScript function that defines formatting for points\n * with the value of null. Works analogously to\n * [formatter](#plotOptions.series.dataLabels.formatter).\n * `nullFormatter` can be applied only to series which support\n * displaying null points i.e `heatmap` or `tilemap`. Does not work\n * with series that don't display null points, like `line`, `column`,\n * `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormatter\n */\n /**\n * How to handle data labels that flow outside the plot area. The\n * default is `\"justify\"`, which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display data labels outside the plot area, set `crop` to\n * `false` and `overflow` to `\"allow\"`.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @default justify\n * @since 3.0.6\n * @apioption plotOptions.series.dataLabels.overflow\n */\n /**\n * When either the `borderWidth` or the `backgroundColor` is set,\n * this is the padding within the box.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @since 2.2.1\n */\n padding: 5,\n /**\n * Aligns data labels relative to points. If `center` alignment is\n * not possible, it defaults to `right`.\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @apioption plotOptions.series.dataLabels.position\n */\n /**\n * Text rotation in degrees. Note that due to a more complex\n * structure, backgrounds, borders and padding will be lost on a\n * rotated data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical labels\n *\n * @type {number}\n * @default 0\n * @apioption plotOptions.series.dataLabels.rotation\n */\n /**\n * The shadow of the box. Works best with `borderWidth` or\n * `backgroundColor`. Since 2.3 the shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity`\n * and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.shadow\n */\n /**\n * The name of a symbol to use for the border around the label.\n * Symbols are predefined functions on the Renderer object.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-shape/\n * A callout for annotations\n *\n * @type {string}\n * @default square\n * @since 4.1.2\n * @apioption plotOptions.series.dataLabels.shape\n */\n /**\n * Styles for the label. The default `color` setting is\n * `\"contrast\"`, which is a pseudo color that Highcharts picks up\n * and applies the maximum contrast to the underlying point item,\n * for example the bar in a bar chart.\n *\n * The `textOutline` is a pseudo property that applies an outline of\n * the given width with the given color, which by default is the\n * maximum contrast to the text. So a bright text color will result\n * in a black text outline for maximum readability on a mixed\n * background. In some cases, especially with grayscale text, the\n * text outline doesn't work well, in which cases it can be disabled\n * by setting it to `\"none\"`. When `useHTML` is true, the\n * `textOutline` will not be picked up. In this, case, the same\n * effect can be acheived through the `text-shadow` CSS property.\n *\n * For some series types, where each point has an extent, like for\n * example tree maps, the data label may overflow the point. There\n * are two strategies for handling overflow. By default, the text\n * will wrap to multiple lines. The other strategy is to set\n * `style.textOverflow` to `ellipsis`, which will keep the text on\n * one line plus it will break inside long words.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-style/\n * Bold labels\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow/\n * Long labels truncated with an ellipsis in a pie\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap/\n * Long labels are wrapped in a pie\n * @sample {highmaps} maps/demo/color-axis/\n * Bold labels\n *\n * @type {Highcharts.CSSObject}\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.style\n */\n style: {\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n color: 'contrast',\n /** @internal */\n textOutline: '1px contrast'\n },\n /**\n * Options for a label text which should follow marker's shape.\n * Border and background are disabled for a label that follows a\n * path.\n *\n * **Note:** Only SVG-based renderer supports this option. Setting\n * `useHTML` to true will disable this option.\n *\n * @declare Highcharts.DataLabelsTextPathOptionsObject\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath\n */\n /**\n * Presentation attributes for the text path.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.attributes\n */\n /**\n * Enable or disable `textPath` option for link's or marker's data\n * labels.\n *\n * @type {boolean}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.enabled\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.useHTML\n */\n /**\n * The vertical alignment of a data label. Can be one of `top`,\n * `middle` or `bottom`. The default value depends on the data, for\n * instance in a column chart, the label is above positive values\n * and below negative values.\n *\n * @type {Highcharts.VerticalAlignValue|null}\n * @since 2.3.3\n */\n verticalAlign: 'bottom',\n /**\n * The x position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n * @sample {highcharts} highcharts/plotoptions/bar-datalabels-align-inside-bar/\n * Data labels inside the bar\n */\n x: 0,\n /**\n * The z index of the data labels. Use a `zIndex` of 6 to display it above\n * the series, or use a `zIndex` of 2 to display it behind the series.\n *\n * @type {number}\n * @default 6\n * @since 2.3.5\n * @apioption plotOptions.series.dataLabels.zIndex\n */\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n */\n y: 0\n },\n /**\n * When the series contains less points than the crop threshold, all\n * points are drawn, even if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns), is that animation is performed on\n * updates. On the other hand, when the series contains more points than\n * the crop threshold, the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @since 2.2\n * @product highcharts highstock\n *\n * @private\n */\n cropThreshold: 300,\n /**\n * Opacity of a series parts: line, fill (e.g. area) and dataLabels.\n *\n * @see [states.inactive.opacity](#plotOptions.series.states.inactive.opacity)\n *\n * @since 7.1.0\n *\n * @private\n */\n opacity: 1,\n /**\n * The width of each point on the x axis. For example in a column chart\n * with one value each day, the pointRange would be 1 day (= 24 * 3600\n * * 1000 milliseconds). This is normally computed automatically, but\n * this option can be used to override the automatic value.\n *\n * @product highstock\n *\n * @private\n */\n pointRange: 0,\n /**\n * When this is true, the series will not cause the Y axis to cross\n * the zero plane (or [threshold](#plotOptions.series.threshold) option)\n * unless the data actually crosses the plane.\n *\n * For example, if `softThreshold` is `false`, a series of 0, 1, 2,\n * 3 will make the Y axis show negative values according to the\n * `minPadding` option. If `softThreshold` is `true`, the Y axis starts\n * at 0.\n *\n * @since 4.1.9\n * @product highcharts highstock\n *\n * @private\n */\n softThreshold: true,\n /**\n * @declare Highcharts.SeriesStatesOptionsObject\n *\n * @private\n */\n states: {\n /**\n * The normal state of a series, or for point items in column, pie\n * and similar series. Currently only used for setting animation\n * when returning to normal state from hover.\n *\n * @declare Highcharts.SeriesStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial}\n */\n animation: true\n },\n /**\n * Options for the hovered series. These settings override the\n * normal state options when a series is moused over or touched.\n *\n * @declare Highcharts.SeriesStatesHoverOptionsObject\n */\n hover: {\n /**\n * Enable separate styles for the hovered series to visualize\n * that the user hovers either the series itself or the legend.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-pie/\n * Pie\n *\n * @type {boolean}\n * @default true\n * @since 1.2\n * @apioption plotOptions.series.states.hover.enabled\n */\n /**\n * Animation setting for hovering the graph in line-type series.\n *\n * @type {boolean|Partial}\n * @since 5.0.8\n * @product highcharts highstock\n */\n animation: {\n /**\n * The duration of the hover animation in milliseconds. By\n * default the hover state animates quickly in, and slowly\n * back to normal.\n *\n * @internal\n */\n duration: 50\n },\n /**\n * Pixel width of the graph line. By default this property is\n * undefined, and the `lineWidthPlus` property dictates how much\n * to increase the linewidth from normal state.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidth/\n * 5px line on hover\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.lineWidth\n */\n /**\n * The additional line width for the graph of a hovered series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n *\n * @since 4.0.3\n * @product highcharts highstock\n */\n lineWidthPlus: 1,\n /**\n * In Highcharts 1.0, the appearance of all markers belonging\n * to the hovered series. For settings on the hover state of the\n * individual point, see\n * [marker.states.hover](#plotOptions.series.marker.states.hover).\n *\n * @deprecated\n *\n * @extends plotOptions.series.marker\n * @excluding states, symbol\n * @product highcharts highstock\n */\n marker: {\n // lineWidth: base + 1,\n // radius: base + 1\n },\n /**\n * Options for the halo appearing around the hovered point in\n * line-type series as well as outside the hovered slice in pie\n * charts. By default the halo is filled by the current point or\n * series color with an opacity of 0.25\\. The halo can be\n * disabled by setting the `halo` option to `null`.\n *\n * In styled mode, the halo is styled with the\n * `.highcharts-halo` class, with colors inherited from\n * `.highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/plotoptions/halo/\n * Halo options\n * @sample {highstock} highcharts/plotoptions/halo/\n * Halo options\n *\n * @declare Highcharts.SeriesStatesHoverHaloOptionsObject\n * @type {null|*}\n * @since 4.0\n * @product highcharts highstock\n */\n halo: {\n /**\n * A collection of SVG attributes to override the appearance\n * of the halo, for example `fill`, `stroke` and\n * `stroke-width`.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 4.0\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.halo.attributes\n */\n /**\n * The pixel size of the halo. For point markers this is the\n * radius of the halo. For pie slices it is the width of the\n * halo outside the slice. For bubbles it defaults to 5 and\n * is the width of the halo outside the bubble.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n size: 10,\n /**\n * Opacity for the halo unless a specific fill is overridden\n * using the `attributes` setting. Note that Highcharts is\n * only able to apply opacity to colors of hex or rgb(a)\n * formats.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n opacity: 0.25\n }\n },\n /**\n * Specific options for point in selected states, after being\n * selected by\n * [allowPointSelect](#plotOptions.series.allowPointSelect)\n * or programmatically.\n *\n * @sample maps/plotoptions/series-allowpointselect/\n * Allow point select demo\n *\n * @declare Highcharts.SeriesStatesSelectOptionsObject\n * @extends plotOptions.series.states.hover\n * @excluding brightness\n */\n select: {\n animation: {\n /** @internal */\n duration: 0\n }\n },\n /**\n * The opposite state of a hover for series.\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @declare Highcharts.SeriesStatesInactiveOptionsObject\n */\n inactive: {\n /**\n * Enable or disable the inactive state for a series\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.states.inactive.enabled\n */\n /**\n * The animation for entering the inactive state.\n *\n * @type {boolean|Partial}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Opacity of series elements (dataLabels, line, area).\n *\n * @type {number}\n */\n opacity: 0.2\n }\n },\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event on a\n * series isn't triggered until the mouse moves over another series, or\n * out of the plot area. When false, the `mouseOut` event on a series is\n * triggered when the mouse leaves the area around the series' graph or\n * markers. This also implies the tooltip when not shared. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series. Defaults to true\n * for line and area type series, but to false for columns, pies etc.\n *\n * **Note:** The boost module will force this option because of\n * technical limitations.\n *\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-true/\n * True by default\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-false/\n * False\n *\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 2.0\n *\n * @private\n */\n stickyTracking: true,\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip), but only\n * the following properties can be defined on a series level.\n *\n * @declare Highcharts.SeriesTooltipOptionsObject\n * @since 2.3\n * @extends tooltip\n * @excluding animation, backgroundColor, borderColor, borderRadius,\n * borderWidth, className, crosshairs, enabled, formatter,\n * headerShape, hideDelay, outside, padding, positioner,\n * shadow, shape, shared, snap, split, stickOnContact,\n * style, useHTML\n * @apioption plotOptions.series.tooltip\n */\n /**\n * When a series contains a data array that is longer than this, only\n * one dimensional arrays of numbers, or two dimensional arrays with\n * x and y values are allowed. Also, only the first point is tested,\n * and the rest are assumed to be the same format. This saves expensive\n * data checking and indexing in long series. Set it to `0` disable.\n *\n * Note:\n * In boost mode turbo threshold is forced. Only array of numbers or\n * two dimensional arrays are allowed.\n *\n * @since 2.2\n * @product highcharts highstock gantt\n *\n * @private\n */\n turboThreshold: 1000,\n /**\n * An array defining zones within a series. Zones can be applied to the\n * X axis, Y axis or Z axis for bubbles, according to the `zoneAxis`\n * option. The zone definitions have to be in ascending order regarding\n * to the value.\n *\n * In styled mode, the color zones are styled with the\n * `.highcharts-zone-{n}` class, or custom classed from the `className`\n * option\n * ([view live demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/color-zones/)).\n *\n * @see [zoneAxis](#plotOptions.series.zoneAxis)\n *\n * @sample {highcharts} highcharts/series/color-zones-simple/\n * Color zones\n * @sample {highstock} highcharts/series/color-zones-simple/\n * Color zones\n *\n * @declare Highcharts.SeriesZonesOptionsObject\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones\n */\n /**\n * Styled mode only. A custom class name for the zone.\n *\n * @sample highcharts/css/color-zones/\n * Zones styled by class name\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.zones.className\n */\n /**\n * Defines the color of the series.\n *\n * @see [series color](#plotOptions.series.color)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.color\n */\n /**\n * A name for the dash style to use for the graph.\n *\n * @see [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n *\n * @sample {highcharts|highstock} highcharts/series/color-zones-dashstyle-dot/\n * Dashed line indicates prognosis\n *\n * @type {Highcharts.DashStyleValue}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.dashStyle\n */\n /**\n * Defines the fill color for the series (in area type series)\n *\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.fillColor\n */\n /**\n * The value up to where the zone extends, if undefined the zones\n * stretches to the last value in the series.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.value\n */\n /**\n * When using dual or multiple color axes, this number defines which\n * colorAxis the particular series is connected to. It refers to\n * either the\n * {@link #colorAxis.id|axis id}\n * or the index of the axis in the colorAxis array, with 0 being the\n * first. Set this option to false to prevent a series from connecting\n * to the default color axis.\n *\n * Since v7.2.0 the option can also be an axis id or an axis index\n * instead of a boolean flag.\n *\n * @sample highcharts/coloraxis/coloraxis-with-pie/\n * Color axis with pie series\n * @sample highcharts/coloraxis/multiple-coloraxis/\n * Multiple color axis\n *\n * @type {number|string|boolean}\n * @default 0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorAxis\n */\n /**\n * Determines what data value should be used to calculate point color\n * if `colorAxis` is used. Requires to set `min` and `max` if some\n * custom point property is used or if approximation for data grouping\n * is set to `'sum'`.\n *\n * @sample highcharts/coloraxis/custom-color-key/\n * Custom color key\n * @sample highcharts/coloraxis/color-key-with-stops/\n * Custom colorKey with color axis stops\n * @sample highcharts/coloraxis/changed-default-color-key/\n * Changed default color key\n *\n * @type {string}\n * @default y\n * @since 7.2.0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorKey\n */\n /**\n * Determines whether the series should look for the nearest point\n * in both dimensions or just the x-dimension when hovering the series.\n * Defaults to `'xy'` for scatter series and `'x'` for most other\n * series. If the data has duplicate x-values, it is recommended to\n * set this to `'xy'` to allow hovering over all points.\n *\n * Applies only to series types using nearest neighbor search (not\n * direct hover) for tooltip.\n *\n * @sample {highcharts} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highstock} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highmaps} highcharts/series/findnearestpointby/\n * Different hover behaviors\n *\n * @since 5.0.10\n * @validvalue [\"x\", \"xy\"]\n *\n * @private\n */\n findNearestPointBy: 'x'\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return seriesDefaults;\n });\n _registerModule(_modules, 'Core/Series/Series.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/SeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (A, D, F, H, LegendSymbol, Point, SeriesDefaults, SeriesRegistry, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var hasTouch = H.hasTouch,\n svg = H.svg,\n win = H.win;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n cleanRecursively = U.cleanRecursively,\n correctFloat = U.correctFloat,\n defined = U.defined,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /**\n * This is the base series prototype that all other series types inherit from.\n * A new series is initialized either through the\n * [series](https://api.highcharts.com/highcharts/series)\n * option structure, or after the chart is initialized, through\n * {@link Highcharts.Chart#addSeries}.\n *\n * The object can be accessed in a number of ways. All series and point event\n * handlers give a reference to the `series` object. The chart object has a\n * {@link Highcharts.Chart#series|series} property that is a collection of all\n * the chart's series. The point objects and axis objects also have the same\n * reference.\n *\n * Another way to reference the series programmatically is by `id`. Add an id\n * in the series configuration options, and get the series object by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the series are given in three levels. Options for\n * all series in a chart are given in the\n * [plotOptions.series](https://api.highcharts.com/highcharts/plotOptions.series)\n * object. Then options for all series of a specific type\n * are given in the plotOptions of that type, for example `plotOptions.line`.\n * Next, options for one single series are given in the series array, or as\n * arguments to `chart.addSeries`.\n *\n * The data in the series is stored in various arrays.\n *\n * - First, `series.options.data` contains all the original config options for\n * each point whether added by options or methods like `series.addPoint`.\n *\n * - Next, `series.data` contains those values converted to points, but in case\n * the series data length exceeds the `cropThreshold`, or if the data is\n * grouped, `series.data` doesn't contain all the points. It only contains the\n * points that have been created on demand.\n *\n * - Then there's `series.points` that contains all currently visible point\n * objects. In case of cropping, the cropped-away points are not part of this\n * array. The `series.points` array starts at `series.cropStart` compared to\n * `series.data` and `series.options.data`. If however the series data is\n * grouped, these can't be correlated one to one.\n *\n * - `series.xData` and `series.processedXData` contain clean x values,\n * equivalent to `series.data` and `series.points`.\n *\n * - `series.yData` and `series.processedYData` contain clean y values,\n * equivalent to `series.data` and `series.points`.\n *\n * @class\n * @name Highcharts.Series\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.SeriesOptionsType|object} options\n * The series options.\n */\n var Series = /** @class */ (function () {\n function Series() {\n /* *\n *\n * Static Properties\n *\n * */\n this._i = void 0;\n this.chart = void 0;\n this.data = void 0;\n this.eventOptions = void 0;\n this.eventsToUnbind = void 0;\n this.index = void 0;\n this.linkedSeries = void 0;\n this.options = void 0;\n this.points = void 0;\n this.processedXData = void 0;\n this.processedYData = void 0;\n this.tooltipOptions = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.zones = void 0;\n /** eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n Series.prototype.init = function (chart, userOptions) {\n fireEvent(this, 'init', { options: userOptions });\n var series = this,\n chartSeries = chart.series;\n // The 'eventsToUnbind' property moved from prototype into the\n // Series init to avoid reference to the same array between\n // the different series and charts. #12959, #13937\n this.eventsToUnbind = [];\n /**\n * Read only. The chart that the series belongs to.\n *\n * @name Highcharts.Series#chart\n * @type {Highcharts.Chart}\n */\n series.chart = chart;\n /**\n * Read only. The series' type, like \"line\", \"area\", \"column\" etc.\n * The type in the series options anc can be altered using\n * {@link Series#update}.\n *\n * @name Highcharts.Series#type\n * @type {string}\n */\n /**\n * Read only. The series' current options. To update, use\n * {@link Series#update}.\n *\n * @name Highcharts.Series#options\n * @type {Highcharts.SeriesOptionsType}\n */\n series.options = series.setOptions(userOptions);\n var options = series.options;\n series.linkedSeries = [];\n // bind the axes\n series.bindAxes();\n extend(series, {\n /**\n * The series name as given in the options. Defaults to\n * \"Series {n}\".\n *\n * @name Highcharts.Series#name\n * @type {string}\n */\n name: options.name,\n state: '',\n /**\n * Read only. The series' visibility state as set by {@link\n * Series#show}, {@link Series#hide}, or in the initial\n * configuration.\n *\n * @name Highcharts.Series#visible\n * @type {boolean}\n */\n visible: options.visible !== false,\n /**\n * Read only. The series' selected state as set by {@link\n * Highcharts.Series#select}.\n *\n * @name Highcharts.Series#selected\n * @type {boolean}\n */\n selected: options.selected === true // false by default\n });\n registerEventOptions(this, options);\n var events = options.events;\n if ((events && events.click) ||\n (options.point &&\n options.point.events &&\n options.point.events.click) ||\n options.allowPointSelect) {\n chart.runTrackerClick = true;\n }\n series.getColor();\n series.getSymbol();\n // Initialize the parallel data arrays\n series.parallelArrays.forEach(function (key) {\n if (!series[key + 'Data']) {\n series[key + 'Data'] = [];\n }\n });\n // Mark cartesian\n if (series.isCartesian) {\n chart.hasCartesianSeries = true;\n }\n // Get the index and register the series in the chart. The index is\n // one more than the current latest series index (#5960).\n var lastSeries;\n if (chartSeries.length) {\n lastSeries = chartSeries[chartSeries.length - 1];\n }\n series._i = pick(lastSeries && lastSeries._i, -1) + 1;\n series.opacity = series.options.opacity;\n // Insert the series and re-order all series above the insertion\n // point.\n chart.orderSeries(this.insert(chartSeries));\n // Set options for series with sorting and set data later.\n if (options.dataSorting && options.dataSorting.enabled) {\n series.setDataSortingOptions();\n }\n else if (!series.points && !series.data) {\n series.setData(options.data, false);\n }\n fireEvent(this, 'afterInit');\n };\n /**\n * Check whether the series item is itself or inherits from a certain\n * series type.\n *\n * @function Highcharts.Series#is\n * @param {string} type The type of series to check for, can be either\n * featured or custom series types. For example `column`, `pie`,\n * `ohlc` etc.\n *\n * @return {boolean}\n * True if this item is or inherits from the given type.\n */\n Series.prototype.is = function (type) {\n return seriesTypes[type] && this instanceof seriesTypes[type];\n };\n /**\n * Insert the series in a collection with other series, either the chart\n * series or yAxis series, in the correct order according to the index\n * option. Used internally when adding series.\n *\n * @private\n * @function Highcharts.Series#insert\n * @param {Array} collection\n * A collection of series, like `chart.series` or `xAxis.series`.\n * @return {number}\n * The index of the series in the collection.\n */\n Series.prototype.insert = function (collection) {\n var indexOption = this.options.index;\n var i;\n // Insert by index option\n if (isNumber(indexOption)) {\n i = collection.length;\n while (i--) {\n // Loop down until the interted element has higher index\n if (indexOption >=\n pick(collection[i].options.index, collection[i]._i)) {\n collection.splice(i + 1, 0, this);\n break;\n }\n }\n if (i === -1) {\n collection.unshift(this);\n }\n i = i + 1;\n // Or just push it to the end\n }\n else {\n collection.push(this);\n }\n return pick(i, collection.length - 1);\n };\n /**\n * Set the xAxis and yAxis properties of cartesian series, and register\n * the series in the `axis.series` array.\n *\n * @private\n * @function Highcharts.Series#bindAxes\n */\n Series.prototype.bindAxes = function () {\n var series = this,\n seriesOptions = series.options,\n chart = series.chart;\n var axisOptions;\n fireEvent(this, 'bindAxes', null, function () {\n // repeat for xAxis and yAxis\n (series.axisTypes || []).forEach(function (AXIS) {\n var index = 0;\n // loop through the chart's axis objects\n chart[AXIS].forEach(function (axis) {\n axisOptions = axis.options;\n // apply if the series xAxis or yAxis option mathches\n // the number of the axis, or if undefined, use the\n // first axis\n if ((seriesOptions[AXIS] === index &&\n !axisOptions.isInternal) ||\n (typeof seriesOptions[AXIS] !==\n 'undefined' &&\n seriesOptions[AXIS] === axisOptions.id) ||\n (typeof seriesOptions[AXIS] ===\n 'undefined' &&\n axisOptions.index === 0)) {\n // register this series in the axis.series lookup\n series.insert(axis.series);\n // set this series.xAxis or series.yAxis reference\n /**\n * Read only. The unique xAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#xAxis\n * @type {Highcharts.Axis}\n */\n /**\n * Read only. The unique yAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#yAxis\n * @type {Highcharts.Axis}\n */\n series[AXIS] = axis;\n // mark dirty for redraw\n axis.isDirty = true;\n }\n if (!axisOptions.isInternal) {\n index++;\n }\n });\n // The series needs an X and an Y axis\n if (!series[AXIS] &&\n series.optionalAxis !== AXIS) {\n error(18, true, chart);\n }\n });\n });\n fireEvent(this, 'afterBindAxes');\n };\n /**\n * For simple series types like line and column, the data values are\n * held in arrays like xData and yData for quick lookup to find extremes\n * and more. For multidimensional series like bubble and map, this can\n * be extended with arrays like zData and valueData by adding to the\n * `series.parallelArrays` array.\n *\n * @private\n * @function Highcharts.Series#updateParallelArrays\n */\n Series.prototype.updateParallelArrays = function (point, i) {\n var series = point.series,\n args = arguments,\n fn = isNumber(i) ?\n // Insert the value in the given position\n function (key) {\n var val = key === 'y' && series.toYData ?\n series.toYData(point) :\n point[key];\n series[key + 'Data'][i] = val;\n } :\n // Apply the method specified in i with the following\n // arguments as arguments\n function (key) {\n Array.prototype[i].apply(series[key + 'Data'], Array.prototype.slice.call(args, 2));\n };\n series.parallelArrays.forEach(fn);\n };\n /**\n * Define hasData functions for series. These return true if there\n * are data points on this series within the plot area.\n *\n * @private\n * @function Highcharts.Series#hasData\n */\n Series.prototype.hasData = function () {\n return ((this.visible &&\n typeof this.dataMax !== 'undefined' &&\n typeof this.dataMin !== 'undefined') || ( // #3703\n this.visible &&\n this.yData &&\n this.yData.length > 0) // #9758\n );\n };\n /**\n * Return an auto incremented x value based on the pointStart and\n * pointInterval options. This is only used if an x value is not given\n * for the point that calls autoIncrement.\n *\n * @private\n * @function Highcharts.Series#autoIncrement\n */\n Series.prototype.autoIncrement = function (x) {\n var options = this.options,\n pointIntervalUnit = options.pointIntervalUnit,\n relativeXValue = options.relativeXValue,\n time = this.chart.time;\n var xIncrement = this.xIncrement,\n date,\n pointInterval;\n xIncrement = pick(xIncrement, options.pointStart, 0);\n this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);\n if (relativeXValue && isNumber(x)) {\n pointInterval *= x;\n }\n // Added code for pointInterval strings\n if (pointIntervalUnit) {\n date = new time.Date(xIncrement);\n if (pointIntervalUnit === 'day') {\n time.set('Date', date, time.get('Date', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'month') {\n time.set('Month', date, time.get('Month', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'year') {\n time.set('FullYear', date, time.get('FullYear', date) + pointInterval);\n }\n pointInterval = date.getTime() - xIncrement;\n }\n if (relativeXValue && isNumber(x)) {\n return xIncrement + pointInterval;\n }\n this.xIncrement = xIncrement + pointInterval;\n return xIncrement;\n };\n /**\n * Internal function to set properties for series if data sorting is\n * enabled.\n *\n * @private\n * @function Highcharts.Series#setDataSortingOptions\n */\n Series.prototype.setDataSortingOptions = function () {\n var options = this.options;\n extend(this, {\n requireSorting: false,\n sorted: false,\n enabledDataSorting: true,\n allowDG: false\n });\n // To allow unsorted data for column series.\n if (!defined(options.pointRange)) {\n options.pointRange = 1;\n }\n };\n /**\n * Set the series options by merging from the options tree. Called\n * internally on initializing and updating series. This function will\n * not redraw the series. For API usage, use {@link Series#update}.\n * @private\n * @function Highcharts.Series#setOptions\n * @param {Highcharts.SeriesOptionsType} itemOptions\n * The series options.\n * @emits Highcharts.Series#event:afterSetOptions\n */\n Series.prototype.setOptions = function (itemOptions) {\n var chart = this.chart,\n chartOptions = chart.options,\n plotOptions = chartOptions.plotOptions,\n userOptions = chart.userOptions || {},\n seriesUserOptions = merge(itemOptions),\n styledMode = chart.styledMode,\n e = {\n plotOptions: plotOptions,\n userOptions: seriesUserOptions\n };\n var zone;\n fireEvent(this, 'setOptions', e);\n // These may be modified by the event\n var typeOptions = e.plotOptions[this.type],\n userPlotOptions = (userOptions.plotOptions || {});\n // use copy to prevent undetected changes (#9762)\n /**\n * Contains series options by the user without defaults.\n * @name Highcharts.Series#userOptions\n * @type {Highcharts.SeriesOptionsType}\n */\n this.userOptions = e.userOptions;\n var options = merge(typeOptions,\n plotOptions.series, \n // #3881, chart instance plotOptions[type] should trump\n // plotOptions.series\n userOptions.plotOptions &&\n userOptions.plotOptions[this.type],\n seriesUserOptions);\n // The tooltip options are merged between global and series specific\n // options. Importance order asscendingly:\n // globals: (1)tooltip, (2)plotOptions.series,\n // (3)plotOptions[this.type]\n // init userOptions with possible later updates: 4-6 like 1-3 and\n // (7)this series options\n this.tooltipOptions = merge(defaultOptions.tooltip, // 1\n defaultOptions.plotOptions.series &&\n defaultOptions.plotOptions.series.tooltip, // 2\n defaultOptions.plotOptions[this.type].tooltip, // 3\n chartOptions.tooltip.userOptions, // 4\n plotOptions.series &&\n plotOptions.series.tooltip, // 5\n plotOptions[this.type].tooltip, // 6\n seriesUserOptions.tooltip // 7\n );\n // When shared tooltip, stickyTracking is true by default,\n // unless user says otherwise.\n this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptions[this.type] &&\n userPlotOptions[this.type].stickyTracking, userPlotOptions.series && userPlotOptions.series.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?\n true :\n options.stickyTracking));\n // Delete marker object if not allowed (#1125)\n if (typeOptions.marker === null) {\n delete options.marker;\n }\n // Handle color zones\n this.zoneAxis = options.zoneAxis;\n var zones = this.zones = (options.zones || []).slice();\n if ((options.negativeColor || options.negativeFillColor) &&\n !options.zones) {\n zone = {\n value: options[this.zoneAxis + 'Threshold'] ||\n options.threshold ||\n 0,\n className: 'highcharts-negative'\n };\n if (!styledMode) {\n zone.color = options.negativeColor;\n zone.fillColor = options.negativeFillColor;\n }\n zones.push(zone);\n }\n if (zones.length) { // Push one extra zone for the rest\n if (defined(zones[zones.length - 1].value)) {\n zones.push(styledMode ? {} : {\n color: this.color,\n fillColor: this.fillColor\n });\n }\n }\n fireEvent(this, 'afterSetOptions', { options: options });\n return options;\n };\n /**\n * Return series name in \"Series {Number}\" format or the one defined by\n * a user. This method can be simply overridden as series name format\n * can vary (e.g. technical indicators).\n *\n * @function Highcharts.Series#getName\n *\n * @return {string}\n * The series name.\n */\n Series.prototype.getName = function () {\n // #4119\n return pick(this.options.name, 'Series ' + (this.index + 1));\n };\n /**\n * @private\n * @function Highcharts.Series#getCyclic\n */\n Series.prototype.getCyclic = function (prop, value, defaults) {\n var chart = this.chart, userOptions = this.userOptions, indexName = prop + 'Index', counterName = prop + 'Counter', len = defaults ? defaults.length : pick(chart.options.chart[prop + 'Count'], chart[prop + 'Count']);\n var i,\n setting;\n if (!value) {\n // Pick up either the colorIndex option, or the _colorIndex\n // after Series.update()\n setting = pick(userOptions[indexName], userOptions['_' + indexName]);\n if (defined(setting)) { // after Series.update()\n i = setting;\n }\n else {\n // #6138\n if (!chart.series.length) {\n chart[counterName] = 0;\n }\n userOptions['_' + indexName] = i =\n chart[counterName] % len;\n chart[counterName] += 1;\n }\n if (defaults) {\n value = defaults[i];\n }\n }\n // Set the colorIndex\n if (typeof i !== 'undefined') {\n this[indexName] = i;\n }\n this[prop] = value;\n };\n /**\n * Get the series' color based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getColor\n */\n Series.prototype.getColor = function () {\n if (this.chart.styledMode) {\n this.getCyclic('color');\n }\n else if (this.options.colorByPoint) {\n this.color = \"#cccccc\" /* Palette.neutralColor20 */;\n }\n else {\n this.getCyclic('color', this.options.color ||\n defaultOptions.plotOptions[this.type].color, this.chart.options.colors);\n }\n };\n /**\n * Get all points' instances created for this series.\n *\n * @private\n * @function Highcharts.Series#getPointsCollection\n */\n Series.prototype.getPointsCollection = function () {\n return (this.hasGroupedData ? this.points : this.data) || [];\n };\n /**\n * Get the series' symbol based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getSymbol\n */\n Series.prototype.getSymbol = function () {\n var seriesMarkerOption = this.options.marker;\n this.getCyclic('symbol', seriesMarkerOption.symbol, this.chart.options.symbols);\n };\n /**\n * Finds the index of an existing point that matches the given point\n * options.\n *\n * @private\n * @function Highcharts.Series#findPointIndex\n * @param {Highcharts.PointOptionsObject} optionsObject\n * The options of the point.\n * @param {number} fromIndex\n * The index to start searching from, used for optimizing series with\n * required sorting.\n * @return {number|undefined}\n * Returns the index of a matching point, or undefined if no match is found.\n */\n Series.prototype.findPointIndex = function (optionsObject, fromIndex) {\n var id = optionsObject.id,\n x = optionsObject.x,\n oldData = this.points,\n dataSorting = this.options.dataSorting;\n var matchingPoint,\n matchedById,\n pointIndex;\n if (id) {\n var item = this.chart.get(id);\n if (item instanceof Point) {\n matchingPoint = item;\n }\n }\n else if (this.linkedParent ||\n this.enabledDataSorting ||\n this.options.relativeXValue) {\n var matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.index === optionsObject.index; };\n if (dataSorting && dataSorting.matchByName) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.name === optionsObject.name; };\n }\n else if (this.options.relativeXValue) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.options.x === optionsObject.x; };\n }\n matchingPoint = find(oldData, matcher);\n // Add unmatched point as a new point\n if (!matchingPoint) {\n return void 0;\n }\n }\n if (matchingPoint) {\n pointIndex = matchingPoint && matchingPoint.index;\n if (typeof pointIndex !== 'undefined') {\n matchedById = true;\n }\n }\n // Search for the same X in the existing data set\n if (typeof pointIndex === 'undefined' && isNumber(x)) {\n pointIndex = this.xData.indexOf(x, fromIndex);\n }\n // Reduce pointIndex if data is cropped\n if (pointIndex !== -1 &&\n typeof pointIndex !== 'undefined' &&\n this.cropped) {\n pointIndex = (pointIndex >= this.cropStart) ?\n pointIndex - this.cropStart : pointIndex;\n }\n if (!matchedById &&\n isNumber(pointIndex) &&\n oldData[pointIndex] && oldData[pointIndex].touched) {\n pointIndex = void 0;\n }\n return pointIndex;\n };\n /**\n * Internal function called from setData. If the point count is the same\n * as it was, or if there are overlapping X values, just run\n * Point.update which is cheaper, allows animation, and keeps references\n * to points. This also allows adding or removing points if the X-es\n * don't match.\n *\n * @private\n * @function Highcharts.Series#updateData\n */\n Series.prototype.updateData = function (data, animation) {\n var options = this.options,\n dataSorting = options.dataSorting,\n oldData = this.points,\n pointsToAdd = [],\n requireSorting = this.requireSorting,\n equalLength = data.length === oldData.length;\n var hasUpdatedByKey,\n i,\n point,\n lastIndex,\n succeeded = true;\n this.xIncrement = null;\n // Iterate the new data\n data.forEach(function (pointOptions, i) {\n var optionsObject = (defined(pointOptions) &&\n this.pointClass.prototype.optionsToObject.call({ series: this },\n pointOptions)) || {};\n var pointIndex;\n // Get the x of the new data point\n var x = optionsObject.x,\n id = optionsObject.id;\n if (id || isNumber(x)) {\n pointIndex = this.findPointIndex(optionsObject, lastIndex);\n // Matching X not found\n // or used already due to ununique x values (#8995),\n // add point (but later)\n if (pointIndex === -1 ||\n typeof pointIndex === 'undefined') {\n pointsToAdd.push(pointOptions);\n // Matching X found, update\n }\n else if (oldData[pointIndex] &&\n pointOptions !== options.data[pointIndex]) {\n oldData[pointIndex].update(pointOptions, false, null, false);\n // Mark it touched, below we will remove all points that\n // are not touched.\n oldData[pointIndex].touched = true;\n // Speed optimize by only searching after last known\n // index. Performs ~20% bettor on large data sets.\n if (requireSorting) {\n lastIndex = pointIndex + 1;\n }\n // Point exists, no changes, don't remove it\n }\n else if (oldData[pointIndex]) {\n oldData[pointIndex].touched = true;\n }\n // If the length is equal and some of the nodes had a\n // match in the same position, we don't want to remove\n // non-matches.\n if (!equalLength ||\n i !== pointIndex ||\n (dataSorting && dataSorting.enabled) ||\n this.hasDerivedData) {\n hasUpdatedByKey = true;\n }\n }\n else {\n // Gather all points that are not matched\n pointsToAdd.push(pointOptions);\n }\n }, this);\n // Remove points that don't exist in the updated data set\n if (hasUpdatedByKey) {\n i = oldData.length;\n while (i--) {\n point = oldData[i];\n if (point && !point.touched && point.remove) {\n point.remove(false, animation);\n }\n }\n // If we did not find keys (ids or x-values), and the length is the\n // same, update one-to-one\n }\n else if (equalLength && (!dataSorting || !dataSorting.enabled)) {\n data.forEach(function (point, i) {\n // .update doesn't exist on a linked, hidden series (#3709)\n // (#10187)\n if (point !== oldData[i].y && (oldData[i].update)) {\n oldData[i].update(point, false, null, false);\n }\n });\n // Don't add new points since those configs are used above\n pointsToAdd.length = 0;\n // Did not succeed in updating data\n }\n else {\n succeeded = false;\n }\n oldData.forEach(function (point) {\n if (point) {\n point.touched = false;\n }\n });\n if (!succeeded) {\n return false;\n }\n // Add new points\n pointsToAdd.forEach(function (point) {\n this.addPoint(point, false, null, null, false);\n }, this);\n if (this.xIncrement === null &&\n this.xData &&\n this.xData.length) {\n this.xIncrement = arrayMax(this.xData);\n this.autoIncrement();\n }\n return true;\n };\n /**\n * Apply a new set of data to the series and optionally redraw it. The\n * new data array is passed by reference (except in case of\n * `updatePoints`), and may later be mutated when updating the chart\n * data.\n *\n * Note the difference in behaviour when setting the same amount of\n * points, or a different amount of points, as handled by the\n * `updatePoints` parameter.\n *\n * @sample highcharts/members/series-setdata/\n * Set new data from a button\n * @sample highcharts/members/series-setdata-pie/\n * Set data in a pie\n * @sample stock/members/series-setdata/\n * Set new data in Highcharts Stock\n * @sample maps/members/series-setdata/\n * Set new data in Highmaps\n *\n * @function Highcharts.Series#setData\n *\n * @param {Array} data\n * Takes an array of data in the same format as described under\n * `series.{type}.data` for the given series type, for example a\n * line series would take data in the form described under\n * [series.line.data](https://api.highcharts.com/highcharts/series.line.data).\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If\n * doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw} after.\n *\n * @param {boolean|Partial} [animation]\n * When the updated data is the same length as the existing data,\n * points will be updated by default, and animation visualizes\n * how the points are changed. Set false to disable animation, or\n * a configuration object to set duration or easing.\n *\n * @param {boolean} [updatePoints=true]\n * When this is true, points will be updated instead of replaced\n * whenever possible. This occurs a) when the updated data is the\n * same length as the existing data, b) when points are matched\n * by their id's, or c) when points can be matched by X values.\n * This allows updating with animation and performs better. In\n * this case, the original array is not passed by reference. Set\n * `false` to prevent.\n */\n Series.prototype.setData = function (data, redraw, animation, updatePoints) {\n if (redraw === void 0) { redraw = true; }\n var series = this,\n oldData = series.points,\n oldDataLength = (oldData && oldData.length) || 0,\n options = series.options,\n chart = series.chart,\n dataSorting = options.dataSorting,\n xAxis = series.xAxis,\n turboThreshold = options.turboThreshold,\n xData = this.xData,\n yData = this.yData,\n pointArrayMap = series.pointArrayMap,\n valueCount = pointArrayMap && pointArrayMap.length,\n keys = options.keys;\n var i,\n pt,\n updatedData,\n indexOfX = 0,\n indexOfY = 1,\n firstPoint = null,\n copiedData;\n if (!chart.options.chart.allowMutatingData) { // #4259\n // Remove old reference\n if (options.data) {\n delete series.options.data;\n }\n if (series.userOptions.data) {\n delete series.userOptions.data;\n }\n copiedData = merge(true, data);\n }\n data = copiedData || data || [];\n var dataLength = data.length;\n if (dataSorting && dataSorting.enabled) {\n data = this.sortData(data);\n }\n // First try to run Point.update which is cheaper, allows animation,\n // and keeps references to points.\n if (chart.options.chart.allowMutatingData &&\n updatePoints !== false &&\n dataLength &&\n oldDataLength &&\n !series.cropped &&\n !series.hasGroupedData &&\n series.visible &&\n // Soft updating has no benefit in boost, and causes JS error\n // (#8355)\n !series.boosted) {\n updatedData = this.updateData(data, animation);\n }\n if (!updatedData) {\n // Reset properties\n series.xIncrement = null;\n series.colorCounter = 0; // for series with colorByPoint (#1547)\n // Update parallel arrays\n this.parallelArrays.forEach(function (key) {\n series[key + 'Data'].length = 0;\n });\n // In turbo mode, only one- or twodimensional arrays of numbers\n // are allowed. The first value is tested, and we assume that\n // all the rest are defined the same way. Although the 'for'\n // loops are similar, they are repeated inside each if-else\n // conditional for max performance.\n if (turboThreshold && dataLength > turboThreshold) {\n firstPoint = series.getFirstValidPoint(data);\n if (isNumber(firstPoint)) { // assume all points are numbers\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n // Assume all points are arrays when first point is\n }\n else if (isArray(firstPoint)) {\n if (valueCount) { // [x, low, high] or [x, o, h, l, c]\n if (firstPoint.length === valueCount) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[0];\n yData[i] =\n pt.slice(1, valueCount + 1);\n }\n }\n }\n else { // [x, y]\n if (keys) {\n indexOfX = keys.indexOf('x');\n indexOfY = keys.indexOf('y');\n indexOfX = indexOfX >= 0 ? indexOfX : 0;\n indexOfY = indexOfY >= 0 ? indexOfY : 1;\n }\n if (firstPoint.length === 1) {\n indexOfY = 0;\n }\n if (indexOfX === indexOfY) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i][indexOfY];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[indexOfX];\n yData[i] = pt[indexOfY];\n }\n }\n }\n }\n else {\n // Highcharts expects configs to be numbers or arrays in\n // turbo mode\n error(12, false, chart);\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n // stray commas in oldIE:\n if (typeof data[i] !== 'undefined') {\n pt = { series: series };\n series.pointClass.prototype.applyOptions.apply(pt, [data[i]]);\n series.updateParallelArrays(pt, i);\n }\n }\n }\n // Forgetting to cast strings to numbers is a common caveat when\n // handling CSV or JSON\n if (yData && isString(yData[0])) {\n error(14, true, chart);\n }\n series.data = [];\n series.options.data = series.userOptions.data = data;\n // destroy old points\n i = oldDataLength;\n while (i--) {\n if (oldData[i] && (oldData[i].destroy)) {\n oldData[i].destroy();\n }\n }\n // reset minRange (#878)\n if (xAxis) {\n xAxis.minRange = xAxis.userMinRange;\n }\n // redraw\n series.isDirty = chart.isDirtyBox = true;\n series.isDirtyData = !!oldData;\n animation = false;\n }\n // Typically for pie series, points need to be processed and\n // generated prior to rendering the legend\n if (options.legendType === 'point') {\n this.processData();\n this.generatePoints();\n }\n if (redraw) {\n chart.redraw(animation);\n }\n };\n /**\n * Internal function to sort series data\n *\n * @private\n * @function Highcharts.Series#sortData\n * @param {Array} data\n * Force data grouping.\n */\n Series.prototype.sortData = function (data) {\n var series = this,\n options = series.options,\n dataSorting = options.dataSorting,\n sortKey = dataSorting.sortKey || 'y',\n getPointOptionsObject = function (series,\n pointOptions) {\n return (defined(pointOptions) &&\n series.pointClass.prototype.optionsToObject.call({\n series: series\n },\n pointOptions)) || {};\n };\n data.forEach(function (pointOptions, i) {\n data[i] = getPointOptionsObject(series, pointOptions);\n data[i].index = i;\n }, this);\n // Sorting\n var sortedData = data.concat().sort(function (a,\n b) {\n var aValue = getNestedProperty(sortKey,\n a);\n var bValue = getNestedProperty(sortKey,\n b);\n return bValue < aValue ? -1 : bValue > aValue ? 1 : 0;\n });\n // Set x value depending on the position in the array\n sortedData.forEach(function (point, i) {\n point.x = i;\n }, this);\n // Set the same x for linked series points if they don't have their\n // own sorting\n if (series.linkedSeries) {\n series.linkedSeries.forEach(function (linkedSeries) {\n var options = linkedSeries.options,\n seriesData = options.data;\n if ((!options.dataSorting ||\n !options.dataSorting.enabled) &&\n seriesData) {\n seriesData.forEach(function (pointOptions, i) {\n seriesData[i] = getPointOptionsObject(linkedSeries, pointOptions);\n if (data[i]) {\n seriesData[i].x = data[i].x;\n seriesData[i].index = i;\n }\n });\n linkedSeries.setData(seriesData, false);\n }\n });\n }\n return data;\n };\n /**\n * Internal function to process the data by cropping away unused data\n * points if the series is longer than the crop threshold. This saves\n * computing time for large series.\n *\n * @private\n * @function Highcharts.Series#getProcessedData\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getProcessedData = function (forceExtremesFromAll) {\n var series = this,\n xAxis = series.xAxis,\n options = series.options,\n cropThreshold = options.cropThreshold,\n getExtremesFromAll = forceExtremesFromAll ||\n series.getExtremesFromAll ||\n options.getExtremesFromAll, // #4599\n isCartesian = series.isCartesian,\n val2lin = xAxis && xAxis.val2lin,\n isLog = !!(xAxis && xAxis.logarithmic);\n var croppedData,\n cropped,\n cropStart = 0,\n distance,\n closestPointRange,\n i, // loop variable\n xExtremes,\n min,\n max, \n // copied during slice operation:\n processedXData = series.xData,\n processedYData = series.yData,\n throwOnUnsorted = series.requireSorting,\n updatingNames = false;\n var dataLength = processedXData.length;\n if (xAxis) {\n // corrected for log axis (#3053)\n xExtremes = xAxis.getExtremes();\n min = xExtremes.min;\n max = xExtremes.max;\n updatingNames = !!(xAxis.categories && !xAxis.names.length);\n }\n // optionally filter out points outside the plot area\n if (isCartesian &&\n series.sorted &&\n !getExtremesFromAll &&\n (!cropThreshold ||\n dataLength > cropThreshold ||\n series.forceCrop)) {\n // it's outside current extremes\n if (processedXData[dataLength - 1] < min ||\n processedXData[0] > max) {\n processedXData = [];\n processedYData = [];\n // only crop if it's actually spilling out\n }\n else if (series.yData && (processedXData[0] < min ||\n processedXData[dataLength - 1] > max)) {\n croppedData = this.cropData(series.xData, series.yData, min, max);\n processedXData = croppedData.xData;\n processedYData = croppedData.yData;\n cropStart = croppedData.start;\n cropped = true;\n }\n }\n // Find the closest distance between processed points\n i = processedXData.length || 1;\n while (--i) {\n distance = (isLog ?\n (val2lin(processedXData[i]) -\n val2lin(processedXData[i - 1])) :\n (processedXData[i] -\n processedXData[i - 1]));\n if (distance > 0 &&\n (typeof closestPointRange === 'undefined' ||\n distance < closestPointRange)) {\n closestPointRange = distance;\n // Unsorted data is not supported by the line tooltip, as well\n // as data grouping and navigation in Stock charts (#725) and\n // width calculation of columns (#1900).\n // Avoid warning during the premature processing pass in\n // updateNames (#16104).\n }\n else if (distance < 0 && throwOnUnsorted && !updatingNames) {\n error(15, false, series.chart);\n throwOnUnsorted = false; // Only once\n }\n }\n return {\n xData: processedXData,\n yData: processedYData,\n cropped: cropped,\n cropStart: cropStart,\n closestPointRange: closestPointRange\n };\n };\n /**\n * Internal function to apply processed data.\n * In Highcharts Stock, this function is extended to provide data grouping.\n *\n * @private\n * @function Highcharts.Series#processData\n * @param {boolean} [force]\n * Force data grouping.\n */\n Series.prototype.processData = function (force) {\n var series = this,\n xAxis = series.xAxis;\n // If the series data or axes haven't changed, don't go through\n // this. Return false to pass the message on to override methods\n // like in data grouping.\n if (series.isCartesian &&\n !series.isDirty &&\n !xAxis.isDirty &&\n !series.yAxis.isDirty &&\n !force) {\n return false;\n }\n var processedData = series.getProcessedData();\n // Record the properties\n series.cropped = processedData.cropped; // undefined or true\n series.cropStart = processedData.cropStart;\n series.processedXData = processedData.xData;\n series.processedYData = processedData.yData;\n series.closestPointRange = (series.basePointRange = processedData.closestPointRange);\n fireEvent(series, 'afterProcessData');\n };\n /**\n * Iterate over xData and crop values between min and max. Returns\n * object containing crop start/end cropped xData with corresponding\n * part of yData, dataMin and dataMax within the cropped range.\n *\n * @private\n * @function Highcharts.Series#cropData\n */\n Series.prototype.cropData = function (xData, yData, min, max, cropShoulder) {\n var dataLength = xData.length;\n var i,\n j,\n cropStart = 0,\n cropEnd = dataLength;\n // line-type series need one point outside\n cropShoulder = pick(cropShoulder, this.cropShoulder);\n // iterate up to find slice start\n for (i = 0; i < dataLength; i++) {\n if (xData[i] >= min) {\n cropStart = Math.max(0, i - cropShoulder);\n break;\n }\n }\n // proceed to find slice end\n for (j = i; j < dataLength; j++) {\n if (xData[j] > max) {\n cropEnd = j + cropShoulder;\n break;\n }\n }\n return {\n xData: xData.slice(cropStart, cropEnd),\n yData: yData.slice(cropStart, cropEnd),\n start: cropStart,\n end: cropEnd\n };\n };\n /**\n * Generate the data point after the data has been processed by cropping\n * away unused points and optionally grouped in Highcharts Stock.\n *\n * @private\n * @function Highcharts.Series#generatePoints\n */\n Series.prototype.generatePoints = function () {\n var series = this,\n options = series.options,\n dataOptions = (series.processedData || options.data),\n processedXData = series.processedXData,\n processedYData = series.processedYData,\n PointClass = series.pointClass,\n processedDataLength = processedXData.length,\n cropStart = series.cropStart || 0,\n hasGroupedData = series.hasGroupedData,\n keys = options.keys,\n points = [],\n groupCropStartIndex = (options.dataGrouping &&\n options.dataGrouping.groupAll ?\n cropStart :\n 0);\n var dataLength,\n cursor,\n point,\n i,\n data = series.data;\n if (!data && !hasGroupedData) {\n var arr = [];\n arr.length = dataOptions.length;\n data = series.data = arr;\n }\n if (keys && hasGroupedData) {\n // grouped data has already applied keys (#6590)\n series.options.keys = false;\n }\n for (i = 0; i < processedDataLength; i++) {\n cursor = cropStart + i;\n if (!hasGroupedData) {\n point = data[cursor];\n // #970:\n if (!point &&\n typeof dataOptions[cursor] !== 'undefined') {\n data[cursor] = point = (new PointClass()).init(series, dataOptions[cursor], processedXData[i]);\n }\n }\n else {\n // splat the y data in case of ohlc data array\n point = (new PointClass()).init(series, [processedXData[i]].concat(splat(processedYData[i])));\n point.dataGroup = series.groupMap[groupCropStartIndex + i];\n if (point.dataGroup.options) {\n point.options = point.dataGroup.options;\n extend(point, point.dataGroup.options);\n // Collision of props and options (#9770)\n delete point.dataLabels;\n }\n }\n if (point) { // #6279\n /**\n * Contains the point's index in the `Series.points` array.\n *\n * @name Highcharts.Point#index\n * @type {number}\n * @readonly\n */\n // For faster access in Point.update\n point.index = hasGroupedData ?\n (groupCropStartIndex + i) : cursor;\n points[i] = point;\n }\n }\n // restore keys options (#6590)\n series.options.keys = keys;\n // Hide cropped-away points - this only runs when the number of\n // points is above cropThreshold, or when swithching view from\n // non-grouped data to grouped data (#637)\n if (data &&\n (processedDataLength !== (dataLength = data.length) ||\n hasGroupedData)) {\n for (i = 0; i < dataLength; i++) {\n // when has grouped data, clear all points\n if (i === cropStart && !hasGroupedData) {\n i += processedDataLength;\n }\n if (data[i]) {\n data[i].destroyElements();\n data[i].plotX = void 0; // #1003\n }\n }\n }\n /**\n * Read only. An array containing those values converted to points.\n * In case the series data length exceeds the `cropThreshold`, or if\n * the data is grouped, `series.data` doesn't contain all the\n * points. Also, in case a series is hidden, the `data` array may be\n * empty. To access raw values, `series.options.data` will always be\n * up to date. `Series.data` only contains the points that have been\n * created on demand. To modify the data, use\n * {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @see Series.points\n *\n * @name Highcharts.Series#data\n * @type {Array}\n */\n series.data = data;\n /**\n * An array containing all currently visible point objects. In case\n * of cropping, the cropped-away points are not part of this array.\n * The `series.points` array starts at `series.cropStart` compared\n * to `series.data` and `series.options.data`. If however the series\n * data is grouped, these can't be correlated one to one. To modify\n * the data, use {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @name Highcharts.Series#points\n * @type {Array}\n */\n series.points = points;\n fireEvent(this, 'afterGeneratePoints');\n };\n /**\n * Get current X extremes for the visible data.\n *\n * @private\n * @function Highcharts.Series#getXExtremes\n * @param {Array} xData\n * The data to inspect. Defaults to the current data within the visible\n * range.\n */\n Series.prototype.getXExtremes = function (xData) {\n return {\n min: arrayMin(xData),\n max: arrayMax(xData)\n };\n };\n /**\n * Calculate Y extremes for the visible data. The result is returned\n * as an object with `dataMin` and `dataMax` properties.\n *\n * @private\n * @function Highcharts.Series#getExtremes\n * @param {Array} [yData]\n * The data to inspect. Defaults to the current data within the visible\n * range.\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getExtremes = function (yData, forceExtremesFromAll) {\n var xAxis = this.xAxis,\n yAxis = this.yAxis,\n xData = this.processedXData || this.xData,\n activeYData = [], \n // Handle X outside the viewed area. This does not work with\n // non-sorted data like scatter (#7639).\n shoulder = this.requireSorting ? this.cropShoulder : 0,\n positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false;\n // #2117, need to compensate for log X axis\n var xExtremes,\n validValue,\n withinRange,\n x,\n y,\n i,\n j,\n xMin = 0,\n xMax = 0,\n activeCounter = 0;\n yData = yData || this.stackedYData || this.processedYData || [];\n var yDataLength = yData.length;\n if (xAxis) {\n xExtremes = xAxis.getExtremes();\n xMin = xExtremes.min;\n xMax = xExtremes.max;\n }\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n // For points within the visible range, including the first\n // point outside the visible range (#7061), consider y extremes.\n validValue = ((isNumber(y) || isArray(y)) &&\n ((y.length || y > 0) || !positiveValuesOnly));\n withinRange = (forceExtremesFromAll ||\n this.getExtremesFromAll ||\n this.options.getExtremesFromAll ||\n this.cropped ||\n !xAxis || // for colorAxis support\n ((xData[i + shoulder] || x) >= xMin &&\n (xData[i - shoulder] || x) <= xMax));\n if (validValue && withinRange) {\n j = y.length;\n if (j) { // array, like ohlc or range data\n while (j--) {\n if (isNumber(y[j])) { // #7380, #11513\n activeYData[activeCounter++] = y[j];\n }\n }\n }\n else {\n activeYData[activeCounter++] = y;\n }\n }\n }\n var dataExtremes = {\n activeYData: activeYData,\n dataMin: arrayMin(activeYData),\n dataMax: arrayMax(activeYData)\n };\n fireEvent(this, 'afterGetExtremes', { dataExtremes: dataExtremes });\n return dataExtremes;\n };\n /**\n * Set the current data extremes as `dataMin` and `dataMax` on the\n * Series item. Use this only when the series properties should be\n * updated.\n *\n * @private\n * @function Highcharts.Series#applyExtremes\n */\n Series.prototype.applyExtremes = function () {\n var dataExtremes = this.getExtremes();\n /**\n * Contains the minimum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMin\n * @type {number|undefined}\n * @readonly\n */\n this.dataMin = dataExtremes.dataMin;\n /**\n * Contains the maximum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMax\n * @type {number|undefined}\n * @readonly\n */\n this.dataMax = dataExtremes.dataMax;\n return dataExtremes;\n };\n /**\n * Find and return the first non null point in the data\n *\n * @private\n * @function Highcharts.Series.getFirstValidPoint\n * @param {Array} data\n * Array of options for points\n */\n Series.prototype.getFirstValidPoint = function (data) {\n var dataLength = data.length;\n var i = 0,\n firstPoint = null;\n while (firstPoint === null && i < dataLength) {\n firstPoint = data[i];\n i++;\n }\n return firstPoint;\n };\n /**\n * Translate data points from raw data values to chart specific\n * positioning data needed later in the `drawPoints` and `drawGraph`\n * functions. This function can be overridden in plugins and custom\n * series type implementations.\n *\n * @function Highcharts.Series#translate\n *\n * @emits Highcharts.Series#events:translate\n */\n Series.prototype.translate = function () {\n if (!this.processedXData) { // hidden series\n this.processData();\n }\n this.generatePoints();\n var series = this,\n options = series.options,\n stacking = options.stacking,\n xAxis = series.xAxis,\n categories = xAxis.categories,\n enabledDataSorting = series.enabledDataSorting,\n yAxis = series.yAxis,\n points = series.points,\n dataLength = points.length,\n pointPlacement = series.pointPlacementToXValue(), // #7860\n dynamicallyPlaced = Boolean(pointPlacement),\n threshold = options.threshold,\n stackThreshold = options.startFromThreshold ? threshold : 0,\n zoneAxis = this.zoneAxis || 'y';\n var i,\n plotX,\n lastPlotX,\n stackIndicator,\n closestPointRangePx = Number.MAX_VALUE;\n /**\n * Plotted coordinates need to be within a limited range. Drawing\n * too far outside the viewport causes various rendering issues\n * (#3201, #3923, #7555).\n * @private\n */\n function limitedRange(val) {\n return clamp(val, -1e5, 1e5);\n }\n // Translate each point\n for (i = 0; i < dataLength; i++) {\n var point = points[i],\n xValue = point.x;\n var pointStack = void 0,\n stackValues = void 0,\n yValue = point.y,\n yBottom = point.low;\n var stack = stacking && yAxis.stacking && yAxis.stacking.stacks[(series.negStacks &&\n yValue <\n (stackThreshold ? 0 : threshold) ?\n '-' :\n '') + series.stackKey];\n if (yAxis.positiveValuesOnly &&\n !yAxis.validatePositiveValue(yValue) ||\n xAxis.positiveValuesOnly &&\n !xAxis.validatePositiveValue(xValue)) {\n point.isNull = true;\n }\n /**\n * The translated X value for the point in terms of pixels. Relative\n * to the X axis position if the series has one, otherwise relative\n * to the plot area. Depending on the series type this value might\n * not be defined.\n * @name Highcharts.Point#plotX\n * @type {number|undefined}\n */\n point.plotX = plotX = correctFloat(// #5236\n // Get the plotX translation\n limitedRange(xAxis.translate(// #3923\n xValue, 0, 0, 0, 1, pointPlacement, this.type === 'flags')) // #3923\n );\n // Calculate the bottom y value for stacked series\n if (stacking &&\n series.visible &&\n stack &&\n stack[xValue]) {\n stackIndicator = series.getStackIndicator(stackIndicator, xValue, series.index);\n if (!point.isNull && stackIndicator.key) {\n pointStack = stack[xValue];\n stackValues = pointStack.points[stackIndicator.key];\n }\n if (pointStack && isArray(stackValues)) {\n yBottom = stackValues[0];\n yValue = stackValues[1];\n if (yBottom === stackThreshold &&\n stackIndicator.key === stack[xValue].base) {\n yBottom = pick(isNumber(threshold) ? threshold : yAxis.min);\n }\n // #1200, #1232\n if (yAxis.positiveValuesOnly &&\n defined(yBottom) &&\n yBottom <= 0) {\n yBottom = void 0;\n }\n point.total = point.stackTotal = pick(pointStack.total);\n point.percentage = defined(point.y) && pointStack.total ?\n (point.y / pointStack.total * 100) : void 0;\n point.stackY = yValue;\n // Place the stack label\n // in case of variwide series (where widths of points are\n // different in most cases), stack labels are positioned\n // wrongly, so the call of the setOffset is omited here and\n // labels are correctly positioned later, at the end of the\n // variwide's translate function (#10962)\n if (!series.irregularWidths) {\n pointStack.setOffset(series.pointXOffset || 0, series.barW || 0, void 0, void 0, void 0, series.xAxis);\n }\n }\n }\n // Set translated yBottom or remove it\n point.yBottom = defined(yBottom) ?\n limitedRange(yAxis.translate(yBottom, 0, 1, 0, 1)) :\n void 0;\n // General hook, used for Highcharts Stock compare and cumulative\n if (series.dataModify) {\n yValue = series.dataModify.modifyValue(yValue, i);\n }\n // Set the the plotY value, reset it for redraws\n // #3201\n point.plotY = void 0;\n if (isNumber(yValue)) {\n var translated = yAxis.translate(yValue,\n false,\n true,\n false,\n true);\n if (typeof translated !== 'undefined') {\n /**\n * The translated Y value for the point in terms of pixels.\n * Relative to the Y axis position if the series has one,\n * otherwise relative to the plot area. Depending on the\n * series type this value might not be defined.\n * @name Highcharts.Point#plotY\n * @type {number|undefined}\n */\n point.plotY = limitedRange(translated);\n }\n }\n point.isInside = this.isPointInside(point);\n // Set client related positions for mouse tracking\n point.clientX = dynamicallyPlaced ?\n correctFloat(xAxis.translate(xValue, 0, 0, 0, 1, pointPlacement)) :\n plotX; // #1514, #5383, #5518\n // Negative points. For bubble charts, this means negative z\n // values (#9728)\n point.negative = point[zoneAxis] < (options[zoneAxis + 'Threshold'] ||\n threshold ||\n 0);\n // some API data\n point.category = pick(categories && categories[point.x], point.x);\n // Determine auto enabling of markers (#3635, #5099)\n if (!point.isNull && point.visible !== false) {\n if (typeof lastPlotX !== 'undefined') {\n closestPointRangePx = Math.min(closestPointRangePx, Math.abs(plotX - lastPlotX));\n }\n lastPlotX = plotX;\n }\n // Find point zone\n point.zone = this.zones.length ? point.getZone() : void 0;\n // Animate new points with data sorting\n if (!point.graphic && series.group && enabledDataSorting) {\n point.isNew = true;\n }\n }\n series.closestPointRangePx = closestPointRangePx;\n fireEvent(this, 'afterTranslate');\n };\n /**\n * Return the series points with null points filtered out.\n *\n * @function Highcharts.Series#getValidPoints\n *\n * @param {Array} [points]\n * The points to inspect, defaults to {@link Series.points}.\n *\n * @param {boolean} [insideOnly=false]\n * Whether to inspect only the points that are inside the visible view.\n *\n * @param {boolean} [allowNull=false]\n * Whether to allow null points to pass as valid points.\n *\n * @return {Array}\n * The valid points.\n */\n Series.prototype.getValidPoints = function (points, insideOnly, allowNull) {\n var chart = this.chart;\n // #3916, #5029, #5085\n return (points || this.points || []).filter(function (point) {\n if (insideOnly && !chart.isInsidePlot(point.plotX, point.plotY, { inverted: chart.inverted })) {\n return false;\n }\n return point.visible !== false &&\n (allowNull || !point.isNull);\n });\n };\n /**\n * Get the clipping for the series. Could be called for a series to\n * initiate animating the clip or to set the final clip (only width\n * and x).\n *\n * @private\n * @function Highcharts.Series#getClip\n */\n Series.prototype.getClipBox = function () {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis;\n // If no axes on the series, use global clipBox\n var seriesBox = merge(chart.clipBox);\n // Otherwise, use clipBox.width which is corrected for plotBorderWidth\n // and clipOffset\n if (xAxis && xAxis.len !== chart.plotSizeX) {\n seriesBox.width = xAxis.len;\n }\n if (yAxis && yAxis.len !== chart.plotSizeY) {\n seriesBox.height = yAxis.len;\n }\n return seriesBox;\n };\n /**\n * Get the shared clip key, creating it if it doesn't exist.\n *\n * @private\n * @function Highcharts.Series#getSharedClipKey\n */\n Series.prototype.getSharedClipKey = function () {\n this.sharedClipKey = (this.options.xAxis || 0) + ',' +\n (this.options.yAxis || 0);\n return this.sharedClipKey;\n };\n /**\n * Set the clipping for the series. For animated series the clip is later\n * modified.\n *\n * @private\n * @function Highcharts.Series#setClip\n */\n Series.prototype.setClip = function () {\n var _a = this,\n chart = _a.chart,\n group = _a.group,\n markerGroup = _a.markerGroup,\n sharedClips = chart.sharedClips,\n renderer = chart.renderer,\n clipBox = this.getClipBox(),\n sharedClipKey = this.getSharedClipKey(); // #4526\n var clipRect = sharedClips[sharedClipKey];\n // If a clipping rectangle for the same set of axes does not exist,\n // create it\n if (!clipRect) {\n sharedClips[sharedClipKey] = clipRect = renderer.clipRect(clipBox);\n // When setting chart size, or when the series is rendered again before\n // starting animating, in compliance to a responsive rule\n }\n else {\n clipRect.animate(clipBox);\n }\n if (group) {\n // When clip is false, reset to no clip after animation\n group.clip(this.options.clip === false ? void 0 : clipRect);\n }\n // Unclip temporary animation clip\n if (markerGroup) {\n markerGroup.clip();\n }\n };\n /**\n * Animate in the series. Called internally twice. First with the `init`\n * parameter set to true, which sets up the initial state of the\n * animation. Then when ready, it is called with the `init` parameter\n * undefined, in order to perform the actual animation.\n *\n * @function Highcharts.Series#animate\n *\n * @param {boolean} [init]\n * Initialize the animation.\n */\n Series.prototype.animate = function (init) {\n var _a = this, chart = _a.chart, group = _a.group, markerGroup = _a.markerGroup, inverted = chart.inverted, animation = animObject(this.options.animation), \n // The key for temporary animation clips\n animationClipKey = [\n this.getSharedClipKey(),\n animation.duration,\n animation.easing,\n animation.defer\n ].join(',');\n var animationClipRect = chart.sharedClips[animationClipKey],\n markerAnimationClipRect = chart.sharedClips[animationClipKey + 'm'];\n // Initialize the animation. Set up the clipping rectangle.\n if (init && group) {\n var clipBox = this.getClipBox();\n // Create temporary animation clips\n if (!animationClipRect) {\n clipBox.width = 0;\n if (inverted) {\n clipBox.x = chart.plotHeight;\n }\n animationClipRect = chart.renderer.clipRect(clipBox);\n chart.sharedClips[animationClipKey] = animationClipRect;\n // The marker clip box. The number 99 is a safe margin to avoid\n // markers being clipped during animation.\n var markerClipBox = {\n x: inverted ? -99 : -99,\n y: inverted ? -99 : -99,\n width: inverted ? chart.plotWidth + 199 : 99,\n height: inverted ? 99 : chart.plotHeight + 199\n };\n markerAnimationClipRect = chart.renderer.clipRect(markerClipBox);\n chart.sharedClips[animationClipKey + 'm'] = markerAnimationClipRect;\n }\n else {\n // When height changes during animation, typically due to\n // responsive settings\n animationClipRect.attr('height', clipBox.height);\n }\n group.clip(animationClipRect);\n if (markerGroup) {\n markerGroup.clip(markerAnimationClipRect);\n }\n // Run the animation\n }\n else if (animationClipRect &&\n // Only first series in this pane\n !animationClipRect.hasClass('highcharts-animating')) {\n var finalBox = this.getClipBox(),\n step_1 = animation.step;\n // Only do this when there are actually markers\n if (markerGroup && markerGroup.element.childNodes.length) {\n // To provide as smooth animation as possible, update the marker\n // group clipping in steps of the main group animation\n animation.step = function (val, fx) {\n if (step_1) {\n step_1.apply(fx, arguments);\n }\n if (fx.prop === 'width' &&\n markerAnimationClipRect &&\n markerAnimationClipRect.element) {\n markerAnimationClipRect.attr(inverted ? 'height' : 'width', val + 99);\n }\n };\n }\n animationClipRect\n .addClass('highcharts-animating')\n .animate(finalBox, animation);\n }\n };\n /**\n * This runs after animation to land on the final plot clipping.\n *\n * @private\n * @function Highcharts.Series#afterAnimate\n *\n * @emits Highcharts.Series#event:afterAnimate\n */\n Series.prototype.afterAnimate = function () {\n var _this = this;\n this.setClip();\n // Destroy temporary clip rectangles that are no longer in use\n objectEach(this.chart.sharedClips, function (clip, key, sharedClips) {\n if (clip && !_this.chart.container.querySelector(\"[clip-path=\\\"url(#\".concat(clip.id, \")\\\"]\"))) {\n clip.destroy();\n delete sharedClips[key];\n }\n });\n this.finishedAnimating = true;\n fireEvent(this, 'afterAnimate');\n };\n /**\n * Draw the markers for line-like series types, and columns or other\n * graphical representation for {@link Point} objects for other series\n * types. The resulting element is typically stored as\n * {@link Point.graphic}, and is created on the first call and updated\n * and moved on subsequent calls.\n *\n * @function Highcharts.Series#drawPoints\n */\n Series.prototype.drawPoints = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n styledMode = chart.styledMode,\n colorAxis = series.colorAxis,\n options = series.options,\n seriesMarkerOptions = options.marker,\n markerGroup = series[series.specialGroup || 'markerGroup'],\n xAxis = series.xAxis,\n globallyEnabled = pick(seriesMarkerOptions.enabled, !xAxis || xAxis.isRadial ? true : null, \n // Use larger or equal as radius is null in bubbles (#6321)\n series.closestPointRangePx >= (seriesMarkerOptions.enabledThreshold *\n seriesMarkerOptions.radius));\n var i,\n point,\n graphic,\n verb,\n pointMarkerOptions,\n hasPointMarker,\n markerAttribs;\n if (seriesMarkerOptions.enabled !== false ||\n series._hasPointMarkers) {\n for (i = 0; i < points.length; i++) {\n point = points[i];\n graphic = point.graphic;\n verb = graphic ? 'animate' : 'attr';\n pointMarkerOptions = point.marker || {};\n hasPointMarker = !!point.marker;\n var shouldDrawMarker = ((globallyEnabled &&\n typeof pointMarkerOptions.enabled === 'undefined') || pointMarkerOptions.enabled) && !point.isNull && point.visible !== false;\n // only draw the point if y is defined\n if (shouldDrawMarker) {\n // Shortcuts\n var symbol = pick(pointMarkerOptions.symbol,\n series.symbol, 'rect');\n markerAttribs = series.markerAttribs(point, (point.selected && 'select'));\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = xAxis.reversed ?\n -(markerAttribs.width || 0) :\n xAxis.width;\n }\n var isInside = point.isInside !== false;\n if (!graphic &&\n isInside &&\n ((markerAttribs.width || 0) > 0 || point.hasImage)) {\n /**\n * SVG graphic representing the point in the chart. In\n * some cases it may be a hidden graphic to improve\n * accessibility.\n *\n * Typically this is a simple shape, like a `rect`\n * for column charts or `path` for line markers, but\n * for some complex series types like boxplot or 3D\n * charts, the graphic may be a `g` element\n * containing other shapes. The graphic is generated\n * the first time {@link Series#drawPoints} runs,\n * and updated and moved on subsequent runs.\n *\n * @see Highcharts.Point#graphics\n *\n * @name Highcharts.Point#graphic\n * @type {Highcharts.SVGElement|undefined}\n */\n point.graphic = graphic = chart.renderer\n .symbol(symbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height, hasPointMarker ?\n pointMarkerOptions :\n seriesMarkerOptions)\n .add(markerGroup);\n // Sliding animation for new points\n if (series.enabledDataSorting &&\n chart.hasRendered) {\n graphic.attr({\n x: point.startXPos\n });\n verb = 'animate';\n }\n }\n if (graphic && verb === 'animate') { // update\n // Since the marker group isn't clipped, each\n // individual marker must be toggled\n graphic[isInside ? 'show' : 'hide'](isInside)\n .animate(markerAttribs);\n }\n // Presentational attributes\n if (graphic) {\n var pointAttr = series.pointAttribs(point, ((styledMode || !point.selected) ?\n void 0 :\n 'select'));\n if (!styledMode) {\n graphic[verb](pointAttr);\n }\n else if (colorAxis) { // #14114\n graphic['css']({\n fill: pointAttr.fill\n });\n }\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n }\n }\n };\n /**\n * Get non-presentational attributes for a point. Used internally for\n * both styled mode and classic. Can be overridden for different series\n * types.\n *\n * @see Series#pointAttribs\n *\n * @function Highcharts.Series#markerAttribs\n *\n * @param {Highcharts.Point} point\n * The Point to inspect.\n *\n * @param {string} [state]\n * The state, can be either `hover`, `select` or undefined.\n *\n * @return {Highcharts.SVGAttributes}\n * A hash containing those attributes that are not settable from CSS.\n */\n Series.prototype.markerAttribs = function (point, state) {\n var seriesOptions = this.options,\n seriesMarkerOptions = seriesOptions.marker,\n pointMarkerOptions = point.marker || {},\n symbol = (pointMarkerOptions.symbol ||\n seriesMarkerOptions.symbol),\n attribs = {};\n var seriesStateOptions,\n pointStateOptions,\n radius = pick(pointMarkerOptions.radius,\n seriesMarkerOptions && seriesMarkerOptions.radius);\n // Handle hover and select states\n if (state) {\n seriesStateOptions = seriesMarkerOptions.states[state];\n pointStateOptions = pointMarkerOptions.states &&\n pointMarkerOptions.states[state];\n radius = pick(pointStateOptions && pointStateOptions.radius, seriesStateOptions && seriesStateOptions.radius, radius && radius + (seriesStateOptions && seriesStateOptions.radiusPlus ||\n 0));\n }\n point.hasImage = symbol && symbol.indexOf('url') === 0;\n if (point.hasImage) {\n radius = 0; // and subsequently width and height is not set\n }\n var pos = point.pos();\n if (isNumber(radius) && pos) {\n attribs.x = pos[0] - radius;\n attribs.y = pos[1] - radius;\n if (seriesOptions.crisp) {\n // Math.floor for #1843:\n attribs.x = Math.floor(attribs.x);\n }\n }\n if (radius) {\n attribs.width = attribs.height = 2 * radius;\n }\n return attribs;\n };\n /**\n * Internal function to get presentational attributes for each point.\n * Unlike {@link Series#markerAttribs}, this function should return\n * those attributes that can also be set in CSS. In styled mode,\n * `pointAttribs` won't be called.\n *\n * @private\n * @function Highcharts.Series#pointAttribs\n *\n * @param {Highcharts.Point} [point]\n * The point instance to inspect.\n *\n * @param {string} [state]\n * The point state, can be either `hover`, `select` or 'normal'. If\n * undefined, normal state is assumed.\n *\n * @return {Highcharts.SVGAttributes}\n * The presentational attributes to be set on the point.\n */\n Series.prototype.pointAttribs = function (point, state) {\n var seriesMarkerOptions = this.options.marker,\n pointOptions = point && point.options,\n pointMarkerOptions = ((pointOptions && pointOptions.marker) || {}),\n pointColorOption = pointOptions && pointOptions.color,\n pointColor = point && point.color,\n zoneColor = point && point.zone && point.zone.color;\n var seriesStateOptions,\n pointStateOptions,\n color = this.color,\n fill,\n stroke,\n strokeWidth = pick(pointMarkerOptions.lineWidth,\n seriesMarkerOptions.lineWidth),\n opacity = 1;\n color = (pointColorOption ||\n zoneColor ||\n pointColor ||\n color);\n fill = (pointMarkerOptions.fillColor ||\n seriesMarkerOptions.fillColor ||\n color);\n stroke = (pointMarkerOptions.lineColor ||\n seriesMarkerOptions.lineColor ||\n color);\n // Handle hover and select states\n state = state || 'normal';\n if (state) {\n seriesStateOptions = (seriesMarkerOptions.states[state] || {});\n pointStateOptions = (pointMarkerOptions.states &&\n pointMarkerOptions.states[state]) || {};\n strokeWidth = pick(pointStateOptions.lineWidth, seriesStateOptions.lineWidth, strokeWidth + pick(pointStateOptions.lineWidthPlus, seriesStateOptions.lineWidthPlus, 0));\n fill = (pointStateOptions.fillColor ||\n seriesStateOptions.fillColor ||\n fill);\n stroke = (pointStateOptions.lineColor ||\n seriesStateOptions.lineColor ||\n stroke);\n opacity = pick(pointStateOptions.opacity, seriesStateOptions.opacity, opacity);\n }\n return {\n 'stroke': stroke,\n 'stroke-width': strokeWidth,\n 'fill': fill,\n 'opacity': opacity\n };\n };\n /**\n * Clear DOM objects and free up memory.\n *\n * @private\n * @function Highcharts.Series#destroy\n *\n * @emits Highcharts.Series#event:destroy\n */\n Series.prototype.destroy = function (keepEventsForUpdate) {\n var series = this,\n chart = series.chart,\n issue134 = /AppleWebKit\\/533/.test(win.navigator.userAgent),\n data = series.data || [];\n var destroy,\n i,\n point,\n axis;\n // add event hook\n fireEvent(series, 'destroy', { keepEventsForUpdate: keepEventsForUpdate });\n // remove events\n this.removeEvents(keepEventsForUpdate);\n // erase from axes\n (series.axisTypes || []).forEach(function (AXIS) {\n axis = series[AXIS];\n if (axis && axis.series) {\n erase(axis.series, series);\n axis.isDirty = axis.forceRedraw = true;\n }\n });\n // remove legend items\n if (series.legendItem) {\n series.chart.legend.destroyItem(series);\n }\n // destroy all points with their elements\n i = data.length;\n while (i--) {\n point = data[i];\n if (point && point.destroy) {\n point.destroy();\n }\n }\n if (series.clips) {\n series.clips.forEach(function (clip) { return clip.destroy(); });\n }\n // Clear the animation timeout if we are destroying the series\n // during initial animation\n U.clearTimeout(series.animationTimeout);\n // Destroy all SVGElements associated to the series\n objectEach(series, function (val, prop) {\n // Survive provides a hook for not destroying\n if (val instanceof SVGElement && !val.survive) {\n // issue 134 workaround\n destroy = issue134 && prop === 'group' ?\n 'hide' :\n 'destroy';\n val[destroy]();\n }\n });\n // remove from hoverSeries\n if (chart.hoverSeries === series) {\n chart.hoverSeries = void 0;\n }\n erase(chart.series, series);\n chart.orderSeries();\n // clear all members\n objectEach(series, function (val, prop) {\n if (!keepEventsForUpdate || prop !== 'hcEvents') {\n delete series[prop];\n }\n });\n };\n /**\n * Clip the graphs into zones for colors and styling.\n *\n * @private\n * @function Highcharts.Series#applyZones\n */\n Series.prototype.applyZones = function () {\n var series = this,\n chart = this.chart,\n renderer = chart.renderer,\n zones = this.zones,\n clips = (this.clips || []),\n graph = this.graph,\n area = this.area,\n plotSizeMax = Math.max(chart.plotWidth,\n chart.plotHeight),\n axis = this[(this.zoneAxis || 'y') + 'Axis'],\n inverted = chart.inverted;\n var translatedFrom,\n translatedTo,\n clipAttr,\n extremes,\n reversed,\n horiz,\n pxRange,\n pxPosMin,\n pxPosMax,\n zoneArea,\n zoneGraph,\n ignoreZones = false;\n if (zones.length &&\n (graph || area) &&\n axis &&\n typeof axis.min !== 'undefined') {\n reversed = axis.reversed;\n horiz = axis.horiz;\n // The use of the Color Threshold assumes there are no gaps\n // so it is safe to hide the original graph and area\n // unless it is not waterfall series, then use showLine property\n // to set lines between columns to be visible (#7862)\n if (graph && !this.showLine) {\n graph.hide();\n }\n if (area) {\n area.hide();\n }\n // Create the clips\n extremes = axis.getExtremes();\n zones.forEach(function (threshold, i) {\n translatedFrom = reversed ?\n (horiz ? chart.plotWidth : 0) :\n (horiz ? 0 : (axis.toPixels(extremes.min) || 0));\n translatedFrom = clamp(pick(translatedTo, translatedFrom), 0, plotSizeMax);\n translatedTo = clamp(Math.round(axis.toPixels(pick(threshold.value, extremes.max), true) || 0), 0, plotSizeMax);\n if (ignoreZones) {\n translatedFrom = translatedTo =\n axis.toPixels(extremes.max);\n }\n pxRange = Math.abs(translatedFrom - translatedTo);\n pxPosMin = Math.min(translatedFrom, translatedTo);\n pxPosMax = Math.max(translatedFrom, translatedTo);\n if (axis.isXAxis) {\n clipAttr = {\n x: inverted ? pxPosMax : pxPosMin,\n y: 0,\n width: pxRange,\n height: plotSizeMax\n };\n if (!horiz) {\n clipAttr.x = chart.plotHeight - clipAttr.x;\n }\n }\n else {\n clipAttr = {\n x: 0,\n y: inverted ? pxPosMax : pxPosMin,\n width: plotSizeMax,\n height: pxRange\n };\n if (horiz) {\n clipAttr.y = chart.plotWidth - clipAttr.y;\n }\n }\n // VML SUPPPORT\n if (inverted && renderer.isVML) {\n if (axis.isXAxis) {\n clipAttr = {\n x: 0,\n y: reversed ? pxPosMin : pxPosMax,\n height: clipAttr.width,\n width: chart.chartWidth\n };\n }\n else {\n clipAttr = {\n x: (clipAttr.y -\n chart.plotLeft -\n chart.spacingBox.x),\n y: 0,\n width: clipAttr.height,\n height: chart.chartHeight\n };\n }\n }\n // END OF VML SUPPORT\n if (clips[i]) {\n clips[i].animate(clipAttr);\n }\n else {\n clips[i] = renderer.clipRect(clipAttr);\n }\n // when no data, graph zone is not applied and after setData\n // clip was ignored. As a result, it should be applied each\n // time.\n zoneArea = series['zone-area-' + i];\n zoneGraph = series['zone-graph-' + i];\n if (graph && zoneGraph) {\n zoneGraph.clip(clips[i]);\n }\n if (area && zoneArea) {\n zoneArea.clip(clips[i]);\n }\n // if this zone extends out of the axis, ignore the others\n ignoreZones = threshold.value > extremes.max;\n // Clear translatedTo for indicators\n if (series.resetZones && translatedTo === 0) {\n translatedTo = void 0;\n }\n });\n this.clips = clips;\n }\n else if (series.visible) {\n // If zones were removed, restore graph and area\n if (graph) {\n graph.show();\n }\n if (area) {\n area.show();\n }\n }\n };\n /**\n * General abstraction for creating plot groups like series.group,\n * series.dataLabelsGroup and series.markerGroup. On subsequent calls,\n * the group will only be adjusted to the updated plot size.\n *\n * @private\n * @function Highcharts.Series#plotGroup\n */\n Series.prototype.plotGroup = function (prop, name, visibility, zIndex, parent) {\n var group = this[prop];\n var isNew = !group,\n attrs = {\n visibility: visibility,\n zIndex: zIndex || 0.1 // IE8 and pointer logic use this\n };\n // Avoid setting undefined opacity, or in styled mode\n if (typeof this.opacity !== 'undefined' &&\n !this.chart.styledMode && this.state !== 'inactive' // #13719\n ) {\n attrs.opacity = this.opacity;\n }\n // Generate it on first call\n if (isNew) {\n this[prop] = group = this.chart.renderer\n .g()\n .add(parent);\n }\n // Add the class names, and replace existing ones as response to\n // Series.update (#6660)\n group.addClass(('highcharts-' + name +\n ' highcharts-series-' + this.index +\n ' highcharts-' + this.type + '-series ' +\n (defined(this.colorIndex) ?\n 'highcharts-color-' + this.colorIndex + ' ' :\n '') +\n (this.options.className || '') +\n (group.hasClass('highcharts-tracker') ?\n ' highcharts-tracker' :\n '')), true);\n // Place it on first and subsequent (redraw) calls\n group.attr(attrs)[isNew ? 'attr' : 'animate'](this.getPlotBox(name));\n return group;\n };\n /**\n * Get the translation and scale for the plot area of this series.\n *\n * @function Highcharts.Series#getPlotBox\n */\n Series.prototype.getPlotBox = function (name) {\n var horAxis = this.xAxis,\n vertAxis = this.yAxis;\n var chart = this.chart,\n inverted = (chart.inverted &&\n !chart.polar &&\n horAxis &&\n this.invertible !== false &&\n name === 'series');\n // Swap axes for inverted (#2339)\n if (chart.inverted) {\n horAxis = vertAxis;\n vertAxis = this.xAxis;\n }\n return {\n translateX: horAxis ? horAxis.left : chart.plotLeft,\n translateY: vertAxis ? vertAxis.top : chart.plotTop,\n rotation: inverted ? 90 : 0,\n rotationOriginX: inverted ?\n (horAxis.len - vertAxis.len) / 2 :\n 0,\n rotationOriginY: inverted ?\n (horAxis.len + vertAxis.len) / 2 :\n 0,\n scaleX: inverted ? -1 : 1,\n scaleY: 1\n };\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n * @private\n * @function Highcharts.Series#removeEvents\n */\n Series.prototype.removeEvents = function (keepEventsForUpdate) {\n var series = this;\n if (!keepEventsForUpdate) {\n // remove all events\n removeEvent(series);\n }\n if (series.eventsToUnbind.length) {\n // remove only internal events for proper update\n // #12355 - solves problem with multiple destroy events\n series.eventsToUnbind.forEach(function (unbind) {\n unbind();\n });\n series.eventsToUnbind.length = 0;\n }\n };\n /**\n * Render the graph and markers. Called internally when first rendering\n * and later when redrawing the chart. This function can be extended in\n * plugins, but normally shouldn't be called directly.\n *\n * @function Highcharts.Series#render\n *\n * @emits Highcharts.Series#event:afterRender\n */\n Series.prototype.render = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n animOptions = animObject(options.animation),\n visibility = series.visible ?\n 'inherit' : 'hidden', // #2597\n zIndex = options.zIndex,\n hasRendered = series.hasRendered,\n chartSeriesGroup = chart.seriesGroup,\n inverted = chart.inverted;\n // Animation doesn't work in IE8 quirks when the group div is\n // hidden, and looks bad in other oldIE\n var animDuration = (!series.finishedAnimating && chart.renderer.isSVG) ?\n animOptions.duration : 0;\n fireEvent(this, 'render');\n // the group\n var group = series.plotGroup('group', 'series', visibility, zIndex, chartSeriesGroup);\n series.markerGroup = series.plotGroup('markerGroup', 'markers', visibility, zIndex, chartSeriesGroup);\n // Initial clipping, applies to columns etc. (#3839).\n if (options.clip !== false) {\n series.setClip();\n }\n // Initialize the animation\n if (series.animate && animDuration) {\n series.animate(true);\n }\n // Draw the graph if any\n if (series.drawGraph) {\n series.drawGraph();\n series.applyZones();\n }\n // Draw the points\n if (series.visible) {\n series.drawPoints();\n }\n // Draw the data labels\n if (series.drawDataLabels) {\n series.drawDataLabels();\n }\n // In pie charts, slices are added to the DOM, but actual rendering\n // is postponed until labels reserved their space\n if (series.redrawPoints) {\n series.redrawPoints();\n }\n // draw the mouse tracking area\n if (series.drawTracker &&\n series.options.enableMouseTracking !== false) {\n series.drawTracker();\n }\n // Run the animation\n if (series.animate && animDuration) {\n series.animate();\n }\n // Call the afterAnimate function on animation complete (but don't\n // overwrite the animation.complete option which should be available\n // to the user).\n if (!hasRendered) {\n // Additional time if defer is defined before afterAnimate\n // will be triggered\n if (animDuration && animOptions.defer) {\n animDuration += animOptions.defer;\n }\n series.animationTimeout = syncTimeout(function () {\n series.afterAnimate();\n }, animDuration || 0);\n }\n // Means data is in accordance with what you see\n series.isDirty = false;\n // (See #322) series.isDirty = series.isDirtyData = false; // means\n // data is in accordance with what you see\n series.hasRendered = true;\n fireEvent(series, 'afterRender');\n };\n /**\n * Redraw the series. This function is called internally from\n * `chart.redraw` and normally shouldn't be called directly.\n * @private\n * @function Highcharts.Series#redraw\n */\n Series.prototype.redraw = function () {\n // Cache it here as it is set to false in render, but used after\n var wasDirty = this.isDirty || this.isDirtyData;\n this.translate();\n this.render();\n if (wasDirty) { // #3868, #3945\n delete this.kdTree;\n }\n };\n /**\n * Find the nearest point from a pointer event. This applies to series that\n * use k-d-trees to get the nearest point. Native pointer events must be\n * normalized using `Pointer.normalize`, that adds `chartX` and `chartY`\n * properties.\n *\n * @sample highcharts/demo/synchronized-charts\n * Synchronized charts with tooltips\n *\n * @function Highcharts.Series#searchPoint\n *\n * @param {Highcharts.PointerEvent} e\n * The normalized pointer event\n * @param {boolean} [compareX=false]\n * Search only by the X value, not Y\n *\n * @return {Point|undefined}\n * The closest point to the pointer event\n */\n Series.prototype.searchPoint = function (e, compareX) {\n var series = this,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n inverted = series.chart.inverted;\n return this.searchKDTree({\n clientX: inverted ?\n xAxis.len - e.chartY + xAxis.pos :\n e.chartX - xAxis.pos,\n plotY: inverted ?\n yAxis.len - e.chartX + yAxis.pos :\n e.chartY - yAxis.pos\n }, compareX, e);\n };\n /**\n * Build the k-d-tree that is used by mouse and touch interaction to get\n * the closest point. Line-like series typically have a one-dimensional\n * tree where points are searched along the X axis, while scatter-like\n * series typically search in two dimensions, X and Y.\n *\n * @private\n * @function Highcharts.Series#buildKDTree\n */\n Series.prototype.buildKDTree = function (e) {\n // Prevent multiple k-d-trees from being built simultaneously\n // (#6235)\n this.buildingKdTree = true;\n var series = this,\n dimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Internal function\n * @private\n */\n function _kdtree(points, depth, dimensions) {\n var length = points && points.length;\n var axis,\n median;\n if (length) {\n // alternate between the axis\n axis = series.kdAxisArray[depth % dimensions];\n // sort point array\n points.sort(function (a, b) {\n return a[axis] - b[axis];\n });\n median = Math.floor(length / 2);\n // build and return nod\n return {\n point: points[median],\n left: _kdtree(points.slice(0, median), depth + 1, dimensions),\n right: _kdtree(points.slice(median + 1), depth + 1, dimensions)\n };\n }\n }\n /**\n * Start the recursive build process with a clone of the points\n * array and null points filtered out. (#3873)\n * @private\n */\n function startRecursive() {\n series.kdTree = _kdtree(series.getValidPoints(null, \n // For line-type series restrict to plot area, but\n // column-type series not (#3916, #4511)\n !series.directTouch), dimensions, dimensions);\n series.buildingKdTree = false;\n }\n delete series.kdTree;\n // For testing tooltips, don't build async. Also if touchstart, we\n // may be dealing with click events on mobile, so don't delay\n // (#6817).\n syncTimeout(startRecursive, series.options.kdNow || (e && e.type === 'touchstart') ? 0 : 1);\n };\n /**\n * @private\n * @function Highcharts.Series#searchKDTree\n */\n Series.prototype.searchKDTree = function (point, compareX, e) {\n var series = this,\n kdX = this.kdAxisArray[0],\n kdY = this.kdAxisArray[1],\n kdComparer = compareX ? 'distX' : 'dist',\n kdDimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Set the one and two dimensional distance on the point object.\n * @private\n */\n function setDistance(p1, p2) {\n var x = (defined(p1[kdX]) &&\n defined(p2[kdX])) ?\n Math.pow(p1[kdX] - p2[kdX], 2) :\n null,\n y = (defined(p1[kdY]) &&\n defined(p2[kdY])) ?\n Math.pow(p1[kdY] - p2[kdY], 2) :\n null,\n r = (x || 0) + (y || 0);\n p2.dist = defined(r) ? Math.sqrt(r) : Number.MAX_VALUE;\n p2.distX = defined(x) ? Math.sqrt(x) : Number.MAX_VALUE;\n }\n /**\n * @private\n */\n function _search(search, tree, depth, dimensions) {\n var point = tree.point,\n axis = series.kdAxisArray[depth % dimensions];\n var nPoint1,\n nPoint2,\n ret = point;\n setDistance(search, point);\n // Pick side based on distance to splitting point\n var tdist = search[axis] - point[axis], sideA = tdist < 0 ? 'left' : 'right', sideB = tdist < 0 ? 'right' : 'left';\n // End of tree\n if (tree[sideA]) {\n nPoint1 = _search(search, tree[sideA], depth + 1, dimensions);\n ret = (nPoint1[kdComparer] <\n ret[kdComparer] ?\n nPoint1 :\n point);\n }\n if (tree[sideB]) {\n // compare distance to current best to splitting point to\n // decide whether to check side B or not\n if (Math.sqrt(tdist * tdist) < ret[kdComparer]) {\n nPoint2 = _search(search, tree[sideB], depth + 1, dimensions);\n ret = (nPoint2[kdComparer] <\n ret[kdComparer] ?\n nPoint2 :\n ret);\n }\n }\n return ret;\n }\n if (!this.kdTree && !this.buildingKdTree) {\n this.buildKDTree(e);\n }\n if (this.kdTree) {\n return _search(point, this.kdTree, kdDimensions, kdDimensions);\n }\n };\n /**\n * @private\n * @function Highcharts.Series#pointPlacementToXValue\n */\n Series.prototype.pointPlacementToXValue = function () {\n var _a = this,\n _b = _a.options,\n pointPlacement = _b.pointPlacement,\n pointRange = _b.pointRange,\n axis = _a.xAxis;\n var factor = pointPlacement;\n // Point placement is relative to each series pointRange (#5889)\n if (factor === 'between') {\n factor = axis.reversed ? -0.5 : 0.5; // #11955\n }\n return isNumber(factor) ?\n factor * (pointRange || axis.pointRange) :\n 0;\n };\n /**\n * @private\n * @function Highcharts.Series#isPointInside\n */\n Series.prototype.isPointInside = function (point) {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis,\n isInside = (typeof point.plotY !== 'undefined' &&\n typeof point.plotX !== 'undefined' &&\n point.plotY >= 0 &&\n point.plotY <= (yAxis ? yAxis.len : chart.plotHeight) &&\n point.plotX >= 0 &&\n point.plotX <= (xAxis ? xAxis.len : chart.plotWidth));\n return isInside;\n };\n /**\n * Draw the tracker object that sits above all data labels and markers to\n * track mouse events on the graph or points. For the line type charts\n * the tracker uses the same graphPath, but with a greater stroke width\n * for better control.\n * @private\n */\n Series.prototype.drawTracker = function () {\n var series = this,\n options = series.options,\n trackByArea = options.trackByArea,\n trackerPath = [].concat(trackByArea ?\n series.areaPath :\n series.graphPath), \n // trackerPathLength = trackerPath.length,\n chart = series.chart,\n pointer = chart.pointer,\n renderer = chart.renderer,\n snap = chart.options.tooltip.snap,\n tracker = series.tracker,\n onMouseOver = function (e) {\n if (chart.hoverSeries !== series) {\n series.onMouseOver();\n }\n }, \n /*\n * Empirical lowest possible opacities for TRACKER_FILL for an\n * element to stay invisible but clickable\n * IE6: 0.002\n * IE7: 0.002\n * IE8: 0.002\n * IE9: 0.00000000001 (unlimited)\n * IE10: 0.0001 (exporting only)\n * FF: 0.00000000001 (unlimited)\n * Chrome: 0.000001\n * Safari: 0.000001\n * Opera: 0.00000000001 (unlimited)\n */\n TRACKER_FILL = 'rgba(192,192,192,' + (svg ? 0.0001 : 0.002) + ')';\n var i;\n // Draw the tracker\n if (tracker) {\n tracker.attr({ d: trackerPath });\n }\n else if (series.graph) { // create\n series.tracker = renderer.path(trackerPath)\n .attr({\n visibility: series.visible ? 'inherit' : 'hidden',\n zIndex: 2\n })\n .addClass(trackByArea ?\n 'highcharts-tracker-area' :\n 'highcharts-tracker-line')\n .add(series.group);\n if (!chart.styledMode) {\n series.tracker.attr({\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n stroke: TRACKER_FILL,\n fill: trackByArea ? TRACKER_FILL : 'none',\n 'stroke-width': series.graph.strokeWidth() +\n (trackByArea ? 0 : 2 * snap)\n });\n }\n // The tracker is added to the series group, which is clipped, but\n // is covered by the marker group. So the marker group also needs to\n // capture events.\n [\n series.tracker,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (tracker) {\n if (tracker) {\n tracker.addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (options.cursor && !chart.styledMode) {\n tracker.css({ cursor: options.cursor });\n }\n if (hasTouch) {\n tracker.on('touchstart', onMouseOver);\n }\n }\n });\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Add a point to the series after render time. The point can be added at\n * the end, or by giving it an X value, to the start or in the middle of the\n * series.\n *\n * @sample highcharts/members/series-addpoint-append/\n * Append point\n * @sample highcharts/members/series-addpoint-append-and-shift/\n * Append and shift\n * @sample highcharts/members/series-addpoint-x-and-y/\n * Both X and Y values given\n * @sample highcharts/members/series-addpoint-pie/\n * Append pie slice\n * @sample stock/members/series-addpoint/\n * Append 100 points in Highcharts Stock\n * @sample stock/members/series-addpoint-shift/\n * Append and shift in Highcharts Stock\n * @sample maps/members/series-addpoint/\n * Add a point in Highmaps\n *\n * @function Highcharts.Series#addPoint\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. If options is a single number, a point with\n * that y value is appended to the series. If it is an array, it will\n * be interpreted as x and y values respectively. If it is an\n * object, advanced options as outlined under `series.data` are\n * applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When adding\n * more than one point, it is highly recommended that the redraw\n * option be set to false, and instead {@link Chart#redraw} is\n * explicitly called after the adding of points is finished.\n * Otherwise, the chart will redraw after adding each point.\n *\n * @param {boolean} [shift=false]\n * If true, a point is shifted off the start of the series as one is\n * appended to the end.\n *\n * @param {boolean|Partial} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `addPoint` event.\n *\n * @emits Highcharts.Series#event:addPoint\n */\n Series.prototype.addPoint = function (options, redraw, shift, animation, withEvent) {\n var series = this,\n seriesOptions = series.options,\n data = series.data,\n chart = series.chart,\n xAxis = series.xAxis,\n names = xAxis && xAxis.hasNames && xAxis.names,\n dataOptions = seriesOptions.data,\n xData = series.xData;\n var isInTheMiddle,\n i;\n // Optional redraw, defaults to true\n redraw = pick(redraw, true);\n // Get options and push the point to xData, yData and series.options. In\n // series.generatePoints the Point instance will be created on demand\n // and pushed to the series.data array.\n var point = { series: series };\n series.pointClass.prototype.applyOptions.apply(point, [options]);\n var x = point.x;\n // Get the insertion point\n i = xData.length;\n if (series.requireSorting && x < xData[i - 1]) {\n isInTheMiddle = true;\n while (i && xData[i - 1] > x) {\n i--;\n }\n }\n // Insert undefined item\n series.updateParallelArrays(point, 'splice', i, 0, 0);\n // Update it\n series.updateParallelArrays(point, i);\n if (names && point.name) {\n names[x] = point.name;\n }\n dataOptions.splice(i, 0, options);\n if (isInTheMiddle ||\n // When processedData is present we need to splice an empty slot\n // into series.data, otherwise generatePoints won't pick it up.\n series.processedData) {\n series.data.splice(i, 0, null);\n series.processData();\n }\n // Generate points to be added to the legend (#1329)\n if (seriesOptions.legendType === 'point') {\n series.generatePoints();\n }\n // Shift the first point off the parallel arrays\n if (shift) {\n if (data[0] && (data[0].remove)) {\n data[0].remove(false);\n }\n else {\n data.shift();\n series.updateParallelArrays(point, 'shift');\n dataOptions.shift();\n }\n }\n // Fire event\n if (withEvent !== false) {\n fireEvent(series, 'addPoint', { point: point });\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw(animation); // Animation is set anyway on redraw, #5665\n }\n };\n /**\n * Remove a point from the series. Unlike the\n * {@link Highcharts.Point#remove} method, this can also be done on a point\n * that is not instanciated because it is outside the view or subject to\n * Highcharts Stock data grouping.\n *\n * @sample highcharts/members/series-removepoint/\n * Remove cropped point\n *\n * @function Highcharts.Series#removePoint\n *\n * @param {number} i\n * The index of the point in the {@link Highcharts.Series.data|data}\n * array.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When\n * removing more than one point, it is highly recommended that the\n * `redraw` option be set to `false`, and instead {@link\n * Highcharts.Chart#redraw} is explicitly called after the adding of\n * points is finished.\n *\n * @param {boolean|Partial} [animation]\n * Whether and optionally how the series should be animated.\n *\n * @emits Highcharts.Point#event:remove\n */\n Series.prototype.removePoint = function (i, redraw, animation) {\n var series = this,\n data = series.data,\n point = data[i],\n points = series.points,\n chart = series.chart,\n remove = function () {\n if (points && points.length === data.length) { // #4935\n points.splice(i, 1);\n }\n data.splice(i, 1);\n series.options.data.splice(i, 1);\n series.updateParallelArrays(point || { series: series }, 'splice', i, 1);\n if (point) {\n point.destroy();\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw();\n }\n };\n setAnimation(animation, chart);\n redraw = pick(redraw, true);\n // Fire the event with a default handler of removing the point\n if (point) {\n point.firePointEvent('remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Remove a series and optionally redraw the chart.\n *\n * @sample highcharts/members/series-remove/\n * Remove first series from a button\n *\n * @function Highcharts.Series#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}.\n *\n * @param {boolean|Partial} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `remove` event.\n *\n * @emits Highcharts.Series#event:remove\n */\n Series.prototype.remove = function (redraw, animation, withEvent, keepEvents) {\n var series = this,\n chart = series.chart;\n /**\n * @private\n */\n function remove() {\n // Destroy elements\n series.destroy(keepEvents);\n // Redraw\n chart.isDirtyLegend = chart.isDirtyBox = true;\n chart.linkSeries();\n if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of removing the point\n if (withEvent !== false) {\n fireEvent(series, 'remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Update the series with a new set of options. For a clean and precise\n * handling of new options, all methods and elements from the series are\n * removed, and it is initialized from scratch. Therefore, this method is\n * more performance expensive than some other utility methods like {@link\n * Series#setData} or {@link Series#setVisible}.\n *\n * Note that `Series.update` may mutate the passed `data` options.\n *\n * @sample highcharts/members/series-update/\n * Updating series options\n * @sample maps/members/series-update/\n * Update series options in Highmaps\n *\n * @function Highcharts.Series#update\n *\n * @param {Highcharts.SeriesOptionsType} options\n * New options that will be merged with the series' existing options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to\n * false and call {@link Chart#redraw} after.\n *\n * @emits Highcharts.Series#event:update\n * @emits Highcharts.Series#event:afterUpdate\n */\n Series.prototype.update = function (options, redraw) {\n options = cleanRecursively(options, this.userOptions);\n fireEvent(this, 'update', { options: options });\n var series = this,\n chart = series.chart, \n // must use user options when changing type because series.options\n // is merged in with type specific plotOptions\n oldOptions = series.userOptions,\n initialType = series.initialType || series.type,\n plotOptions = chart.options.plotOptions,\n initialSeriesProto = seriesTypes[initialType].prototype,\n groups = [\n 'group',\n 'markerGroup',\n 'dataLabelsGroup',\n 'transformGroup',\n 'shadowGroup'\n ], \n // Animation must be enabled when calling update before the initial\n // animation has first run. This happens when calling update\n // directly after chart initialization, or when applying responsive\n // rules (#6912).\n animation = series.finishedAnimating && { animation: false },\n kinds = {};\n var seriesOptions,\n n,\n preserve = [\n 'eventOptions',\n 'navigatorSeries',\n 'baseSeries'\n ],\n newType = (options.type ||\n oldOptions.type ||\n chart.options.chart.type);\n var keepPoints = !(\n // Indicators, histograms etc recalculate the data. It should be\n // possible to omit this.\n this.hasDerivedData ||\n // New type requires new point classes\n (newType && newType !== this.type) ||\n // New options affecting how the data points are built\n typeof options.pointStart !== 'undefined' ||\n typeof options.pointInterval !== 'undefined' ||\n typeof options.relativeXValue !== 'undefined' ||\n options.joinBy ||\n options.mapData || // #11636\n // Changes to data grouping requires new points in new group\n series.hasOptionChanged('dataGrouping') ||\n series.hasOptionChanged('pointStart') ||\n series.hasOptionChanged('pointInterval') ||\n series.hasOptionChanged('pointIntervalUnit') ||\n series.hasOptionChanged('keys'));\n newType = newType || initialType;\n if (keepPoints) {\n preserve.push('data', 'isDirtyData', 'points', 'processedData', // #17057\n 'processedXData', 'processedYData', 'xIncrement', 'cropped', '_hasPointMarkers', '_hasPointLabels', 'clips', // #15420\n // Networkgraph (#14397)\n 'nodes', 'layout', \n // Treemap\n 'level', \n // Map specific, consider moving it to series-specific preserve-\n // properties (#10617)\n 'mapMap', 'mapData', 'minY', 'maxY', 'minX', 'maxX');\n if (options.visible !== false) {\n preserve.push('area', 'graph');\n }\n series.parallelArrays.forEach(function (key) {\n preserve.push(key + 'Data');\n });\n if (options.data) {\n // setData uses dataSorting options so we need to update them\n // earlier\n if (options.dataSorting) {\n extend(series.options.dataSorting, options.dataSorting);\n }\n this.setData(options.data, false);\n }\n }\n // Do the merge, with some forced options\n options = merge(oldOptions, animation, {\n // When oldOptions.index is null it should't be cleared.\n // Otherwise navigator series will have wrong indexes (#10193).\n index: typeof oldOptions.index === 'undefined' ?\n series.index : oldOptions.index,\n pointStart: pick(\n // when updating from blank (#7933)\n (plotOptions &&\n plotOptions.series &&\n plotOptions.series.pointStart), oldOptions.pointStart, \n // when updating after addPoint\n series.xData[0])\n }, (!keepPoints && { data: series.options.data }), options);\n // Merge does not merge arrays, but replaces them. Since points were\n // updated, `series.options.data` has correct merged options, use it:\n if (keepPoints && options.data) {\n options.data = series.options.data;\n }\n // Make sure preserved properties are not destroyed (#3094)\n preserve = groups.concat(preserve);\n preserve.forEach(function (prop) {\n preserve[prop] = series[prop];\n delete series[prop];\n });\n var casting = false;\n if (seriesTypes[newType]) {\n casting = newType !== series.type;\n // Destroy the series and delete all properties, it will be\n // reinserted within the `init` call below\n series.remove(false, false, false, true);\n if (casting) {\n // Modern browsers including IE11\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(series, seriesTypes[newType].prototype);\n // Legacy (IE < 11)\n }\n else {\n var ownEvents = Object.hasOwnProperty.call(series, 'hcEvents') && series.hcEvents;\n for (n in initialSeriesProto) { // eslint-disable-line guard-for-in\n series[n] = void 0;\n }\n // Reinsert all methods and properties from the new type\n // prototype (#2270, #3719).\n extend(series, seriesTypes[newType].prototype);\n // The events are tied to the prototype chain, don't copy if\n // they're not the series' own\n if (ownEvents) {\n series.hcEvents = ownEvents;\n }\n else {\n delete series.hcEvents;\n }\n }\n }\n }\n else {\n error(17, true, chart, { missingModuleFor: newType });\n }\n // Re-register groups (#3094) and other preserved properties\n preserve.forEach(function (prop) {\n series[prop] = preserve[prop];\n });\n series.init(chart, options);\n // Remove particular elements of the points. Check `series.options`\n // because we need to consider the options being set on plotOptions as\n // well.\n if (keepPoints && this.points) {\n seriesOptions = series.options;\n // What kind of elements to destroy\n if (seriesOptions.visible === false) {\n kinds.graphic = 1;\n kinds.dataLabel = 1;\n }\n else if (!series._hasPointLabels) {\n var marker = seriesOptions.marker,\n dataLabels = seriesOptions.dataLabels,\n oldMarker = oldOptions.marker || {};\n // If the marker got disabled or changed its symbol, width or\n // height - destroy\n if (marker && (marker.enabled === false ||\n oldMarker.symbol !== marker.symbol || // #10870, #15946\n oldMarker.height !== marker.height || // #16274\n oldMarker.width !== marker.width // #16274\n )) {\n kinds.graphic = 1;\n }\n if (dataLabels &&\n dataLabels.enabled === false) {\n kinds.dataLabel = 1;\n }\n }\n for (var _a = 0, _b = this.points; _a < _b.length; _a++) {\n var point = _b[_a];\n if (point && point.series) {\n point.resolveColor();\n // Destroy elements in order to recreate based on updated\n // series options.\n if (Object.keys(kinds).length) {\n point.destroyElements(kinds);\n }\n if (seriesOptions.showInLegend === false &&\n point.legendItem) {\n chart.legend.destroyItem(point);\n }\n }\n }\n }\n series.initialType = initialType;\n chart.linkSeries(); // Links are lost in series.remove (#3028)\n // #15383: Fire updatedData if the type has changed to keep linked\n // series such as indicators updated\n if (casting && series.linkedSeries.length) {\n series.isDirtyData = true;\n }\n fireEvent(this, 'afterUpdate');\n if (pick(redraw, true)) {\n chart.redraw(keepPoints ? void 0 : false);\n }\n };\n /**\n * Used from within series.update\n * @private\n */\n Series.prototype.setName = function (name) {\n this.name = this.options.name = this.userOptions.name = name;\n this.chart.isDirtyLegend = true;\n };\n /**\n * Check if the option has changed.\n * @private\n */\n Series.prototype.hasOptionChanged = function (optionName) {\n var chart = this.chart,\n option = this.options[optionName],\n plotOptions = chart.options.plotOptions,\n oldOption = this.userOptions[optionName];\n if (oldOption) {\n return option !== oldOption;\n }\n return option !==\n pick(plotOptions &&\n plotOptions[this.type] &&\n plotOptions[this.type][optionName], plotOptions &&\n plotOptions.series &&\n plotOptions.series[optionName], option);\n };\n /**\n * Runs on mouse over the series graphical items.\n *\n * @function Highcharts.Series#onMouseOver\n * @emits Highcharts.Series#event:mouseOver\n */\n Series.prototype.onMouseOver = function () {\n var series = this,\n chart = series.chart,\n hoverSeries = chart.hoverSeries,\n pointer = chart.pointer;\n pointer.setHoverChartIndex();\n // set normal state to previous series\n if (hoverSeries && hoverSeries !== series) {\n hoverSeries.onMouseOut();\n }\n // trigger the event, but to save processing time,\n // only if defined\n if (series.options.events.mouseOver) {\n fireEvent(series, 'mouseOver');\n }\n // hover this\n series.setState('hover');\n /**\n * Contains the original hovered series.\n *\n * @name Highcharts.Chart#hoverSeries\n * @type {Highcharts.Series|null}\n */\n chart.hoverSeries = series;\n };\n /**\n * Runs on mouse out of the series graphical items.\n *\n * @function Highcharts.Series#onMouseOut\n *\n * @emits Highcharts.Series#event:mouseOut\n */\n Series.prototype.onMouseOut = function () {\n // trigger the event only if listeners exist\n var series = this,\n options = series.options,\n chart = series.chart,\n tooltip = chart.tooltip,\n hoverPoint = chart.hoverPoint;\n // #182, set to null before the mouseOut event fires\n chart.hoverSeries = null;\n // trigger mouse out on the point, which must be in this series\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n // fire the mouse out event\n if (series && options.events.mouseOut) {\n fireEvent(series, 'mouseOut');\n }\n // hide the tooltip\n if (tooltip &&\n !series.stickyTracking &&\n (!tooltip.shared || series.noSharedTooltip)) {\n tooltip.hide();\n }\n // Reset all inactive states\n chart.series.forEach(function (s) {\n s.setState('', true);\n });\n };\n /**\n * Set the state of the series. Called internally on mouse interaction\n * operations, but it can also be called directly to visually\n * highlight a series.\n *\n * @function Highcharts.Series#setState\n *\n * @param {Highcharts.SeriesStateValue|\"\"} [state]\n * The new state, can be either `'hover'`, `'inactive'`, `'select'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [inherit]\n * Determines if state should be inherited by points too.\n */\n Series.prototype.setState = function (state, inherit) {\n var series = this,\n options = series.options,\n graph = series.graph,\n inactiveOtherPoints = options.inactiveOtherPoints,\n stateOptions = options.states, \n // By default a quick animation to hover/inactive,\n // slower to un-hover\n stateAnimation = pick((stateOptions[state || 'normal'] &&\n stateOptions[state || 'normal'].animation),\n series.chart.options.chart.animation);\n var attribs,\n lineWidth = options.lineWidth,\n i = 0,\n opacity = options.opacity;\n state = state || '';\n if (series.state !== state) {\n // Toggle class names\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (group) {\n if (group) {\n // Old state\n if (series.state) {\n group.removeClass('highcharts-series-' + series.state);\n }\n // New state\n if (state) {\n group.addClass('highcharts-series-' + state);\n }\n }\n });\n series.state = state;\n if (!series.chart.styledMode) {\n if (stateOptions[state] &&\n stateOptions[state].enabled === false) {\n return;\n }\n if (state) {\n lineWidth = (stateOptions[state].lineWidth ||\n lineWidth + (stateOptions[state].lineWidthPlus || 0)); // #4035\n opacity = pick(stateOptions[state].opacity, opacity);\n }\n if (graph && !graph.dashstyle && isNumber(lineWidth)) {\n attribs = {\n 'stroke-width': lineWidth\n };\n // Animate the graph stroke-width.\n graph.animate(attribs, stateAnimation);\n while (series['zone-graph-' + i]) {\n series['zone-graph-' + i].animate(attribs, stateAnimation);\n i = i + 1;\n }\n }\n // For some types (pie, networkgraph, sankey) opacity is\n // resolved on a point level\n if (!inactiveOtherPoints) {\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup,\n series.labelBySeries\n ].forEach(function (group) {\n if (group) {\n group.animate({\n opacity: opacity\n }, stateAnimation);\n }\n });\n }\n }\n }\n // Don't loop over points on a series that doesn't apply inactive state\n // to siblings markers (e.g. line, column)\n if (inherit && inactiveOtherPoints && series.points) {\n series.setAllPointsToState(state || void 0);\n }\n };\n /**\n * Set the state for all points in the series.\n *\n * @function Highcharts.Series#setAllPointsToState\n *\n * @private\n *\n * @param {string} [state]\n * Can be either `hover` or undefined to set to normal state.\n */\n Series.prototype.setAllPointsToState = function (state) {\n this.points.forEach(function (point) {\n if (point.setState) {\n point.setState(state);\n }\n });\n };\n /**\n * Show or hide the series.\n *\n * @function Highcharts.Series#setVisible\n *\n * @param {boolean} [visible]\n * True to show the series, false to hide. If undefined, the visibility is\n * toggled.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw|chart.redraw()} after.\n *\n * @emits Highcharts.Series#event:hide\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.setVisible = function (vis, redraw) {\n var series = this,\n chart = series.chart,\n ignoreHiddenSeries = chart.options.chart.ignoreHiddenSeries,\n oldVisibility = series.visible;\n // if called without an argument, toggle visibility\n series.visible =\n vis =\n series.options.visible =\n series.userOptions.visible =\n typeof vis === 'undefined' ? !oldVisibility : vis; // #5618\n var showOrHide = vis ? 'show' : 'hide';\n // show or hide elements\n [\n 'group',\n 'dataLabelsGroup',\n 'markerGroup',\n 'tracker',\n 'tt'\n ].forEach(function (key) {\n if (series[key]) {\n series[key][showOrHide]();\n }\n });\n // hide tooltip (#1361)\n if (chart.hoverSeries === series ||\n (chart.hoverPoint && chart.hoverPoint.series) === series) {\n series.onMouseOut();\n }\n if (series.legendItem) {\n chart.legend.colorizeItem(series, vis);\n }\n // rescale or adapt to resized chart\n series.isDirty = true;\n // in a stack, all other series are affected\n if (series.options.stacking) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.options.stacking && otherSeries.visible) {\n otherSeries.isDirty = true;\n }\n });\n }\n // show or hide linked series\n series.linkedSeries.forEach(function (otherSeries) {\n otherSeries.setVisible(vis, false);\n });\n if (ignoreHiddenSeries) {\n chart.isDirtyBox = true;\n }\n fireEvent(series, showOrHide);\n if (redraw !== false) {\n chart.redraw();\n }\n };\n /**\n * Show the series if hidden.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#show\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.show = function () {\n this.setVisible(true);\n };\n /**\n * Hide the series if visible. If the\n * [chart.ignoreHiddenSeries](https://api.highcharts.com/highcharts/chart.ignoreHiddenSeries)\n * option is true, the chart is redrawn without this series.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#hide\n * @emits Highcharts.Series#event:hide\n */\n Series.prototype.hide = function () {\n this.setVisible(false);\n };\n /**\n * Select or unselect the series. This means its\n * {@link Highcharts.Series.selected|selected}\n * property is set, the checkbox in the legend is toggled and when selected,\n * the series is returned by the {@link Highcharts.Chart#getSelectedSeries}\n * function.\n *\n * @sample highcharts/members/series-select/\n * Select a series from a button\n *\n * @function Highcharts.Series#select\n *\n * @param {boolean} [selected]\n * True to select the series, false to unselect. If undefined, the selection\n * state is toggled.\n *\n * @emits Highcharts.Series#event:select\n * @emits Highcharts.Series#event:unselect\n */\n Series.prototype.select = function (selected) {\n var series = this;\n series.selected =\n selected =\n this.options.selected = (typeof selected === 'undefined' ?\n !series.selected :\n selected);\n if (series.checkbox) {\n series.checkbox.checked = selected;\n }\n fireEvent(series, selected ? 'select' : 'unselect');\n };\n /**\n * Checks if a tooltip should be shown for a given point.\n *\n * @private\n */\n Series.prototype.shouldShowTooltip = function (plotX, plotY, options) {\n if (options === void 0) { options = {}; }\n options.series = this;\n options.visiblePlotOnly = true;\n return this.chart.isInsidePlot(plotX, plotY, options);\n };\n Series.defaultOptions = SeriesDefaults;\n /**\n * Registry of all available series types.\n *\n * @name Highcharts.Series.types\n * @type {Highcharts.Dictionary}\n */\n Series.types = SeriesRegistry.seriesTypes;\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Registers a series class to be accessible via `Series.types`.\n *\n * @function Highcharts.Series.registerType\n *\n * @param {string} seriesType\n * The series type as an identifier string in lower case.\n *\n * @param {Function} SeriesClass\n * The series class as a class pattern or a constructor function with\n * prototype.\n */\n Series.registerType = SeriesRegistry.registerSeriesType;\n return Series;\n }());\n extend(Series.prototype, {\n axisTypes: ['xAxis', 'yAxis'],\n coll: 'series',\n colorCounter: 0,\n cropShoulder: 1,\n directTouch: false,\n drawLegendSymbol: LegendSymbol.drawLineMarker,\n isCartesian: true,\n kdAxisArray: ['clientX', 'plotY'],\n // each point's x and y values are stored in this.xData and this.yData:\n parallelArrays: ['x', 'y'],\n pointClass: Point,\n requireSorting: true,\n // requires the data to be sorted:\n sorted: true\n });\n /* *\n *\n * Registry\n *\n * */\n SeriesRegistry.series = Series;\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * This is a placeholder type of the possible series options for\n * [Highcharts](../highcharts/series), [Highcharts Stock](../highstock/series),\n * [Highmaps](../highmaps/series), and [Gantt](../gantt/series).\n *\n * In TypeScript is this dynamically generated to reference all possible types\n * of series options.\n *\n * @ignore-declaration\n * @typedef {Highcharts.SeriesOptions|Highcharts.Dictionary<*>} Highcharts.SeriesOptionsType\n */\n /**\n * Options for `dataSorting`.\n *\n * @interface Highcharts.DataSortingOptionsObject\n * @since 8.0.0\n */ /**\n * Enable or disable data sorting for the series.\n * @name Highcharts.DataSortingOptionsObject#enabled\n * @type {boolean|undefined}\n */ /**\n * Whether to allow matching points by name in an update.\n * @name Highcharts.DataSortingOptionsObject#matchByName\n * @type {boolean|undefined}\n */ /**\n * Determines what data value should be used to sort by.\n * @name Highcharts.DataSortingOptionsObject#sortKey\n * @type {string|undefined}\n */\n /**\n * Function callback when a series has been animated.\n *\n * @callback Highcharts.SeriesAfterAnimateCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesAfterAnimateEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding completed animation of a series.\n *\n * @interface Highcharts.SeriesAfterAnimateEventObject\n */ /**\n * Animated series.\n * @name Highcharts.SeriesAfterAnimateEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesAfterAnimateEventObject#type\n * @type {\"afterAnimate\"}\n */\n /**\n * Function callback when the checkbox next to the series' name in the legend is\n * clicked.\n *\n * @callback Highcharts.SeriesCheckboxClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesCheckboxClickEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding check of a series box.\n *\n * @interface Highcharts.SeriesCheckboxClickEventObject\n */ /**\n * Whether the box has been checked.\n * @name Highcharts.SeriesCheckboxClickEventObject#checked\n * @type {boolean}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#item\n * @type {Highcharts.Series}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Function callback when a series is clicked. Return false to cancel toogle\n * actions.\n *\n * @callback Highcharts.SeriesClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series.\n *\n * @interface Highcharts.SeriesClickEventObject\n * @extends global.Event\n */ /**\n * Nearest point on the graph.\n * @name Highcharts.SeriesClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Gets fired when the series is hidden after chart generation time, either by\n * clicking the legend item or by calling `.hide()`.\n *\n * @callback Highcharts.SeriesHideCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin` of a line\n * graph.\n *\n * @typedef {\"butt\"|\"round\"|\"square\"|string} Highcharts.SeriesLinecapValue\n */\n /**\n * Gets fired when the legend item belonging to the series is clicked. The\n * default action is to toggle the visibility of the series. This can be\n * prevented by returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {global.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Gets fired when the mouse leaves the graph.\n *\n * @callback Highcharts.SeriesMouseOutCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the graph.\n *\n * @callback Highcharts.SeriesMouseOverCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Translation and scale for the plot area of a series.\n *\n * @interface Highcharts.SeriesPlotBoxObject\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateY\n * @type {number}\n */\n /**\n * Gets fired when the series is shown after chart generation time, either by\n * clicking the legend item or by calling `.show()`.\n *\n * @callback Highcharts.SeriesShowCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the series state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.SeriesStateValue\n */\n ''; // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * Series options for specific data and the data itself. In TypeScript you\n * have to cast the series options to specific series types, to get all\n * possible options for a series.\n *\n * @example\n * // TypeScript example\n * Highcharts.chart('container', {\n * series: [{\n * color: '#06C',\n * data: [[0, 1], [2, 3]]\n * } as Highcharts.SeriesLineOptions ]\n * });\n *\n * @type {Array<*>}\n * @apioption series\n */\n /**\n * An id for the series. This can be used after render time to get a pointer\n * to the series object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @type {string}\n * @since 1.2.0\n * @apioption series.id\n */\n /**\n * The index of the series in the chart, affecting the internal index in the\n * `chart.series` array, the visible Z index as well as the order in the\n * legend.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption series.index\n */\n /**\n * The sequential index of the series in the legend.\n *\n * @see [legend.reversed](#legend.reversed),\n * [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts|highstock} highcharts/series/legendindex/\n * Legend in opposite order\n *\n * @type {number}\n * @apioption series.legendIndex\n */\n /**\n * The name of the series as shown in the legend, tooltip etc.\n *\n * @sample {highcharts} highcharts/series/name/\n * Series name\n * @sample {highmaps} maps/demo/category-map/\n * Series name\n *\n * @type {string}\n * @apioption series.name\n */\n /**\n * This option allows grouping series in a stacked chart. The stack option\n * can be a string or anything else, as long as the grouped series' stack\n * options match each other after conversion into a string.\n *\n * @sample {highcharts} highcharts/series/stack/\n * Stacked and grouped columns\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highstock\n * @apioption series.stack\n */\n /**\n * The type of series, for example `line` or `column`. By default, the\n * series type is inherited from [chart.type](#chart.type), so unless the\n * chart is a combination of series types, there is no need to set it on the\n * series level.\n *\n * @sample {highcharts} highcharts/series/type/\n * Line and column in the same chart\n * @sample highcharts/series/type-dynamic/\n * Dynamic types with button selector\n * @sample {highmaps} maps/demo/mapline-mappoint/\n * Multiple types in the same map\n *\n * @type {string}\n * @apioption series.type\n */\n /**\n * When using dual or multiple x axes, this number defines which xAxis the\n * particular series is connected to. It refers to either the\n * {@link #xAxis.id|axis id}\n * or the index of the axis in the xAxis array, with 0 being the first.\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.xAxis\n */\n /**\n * When using dual or multiple y axes, this number defines which yAxis the\n * particular series is connected to. It refers to either the\n * {@link #yAxis.id|axis id}\n * or the index of the axis in the yAxis array, with 0 being the first.\n *\n * @sample {highcharts} highcharts/series/yaxis/\n * Apply the column series to the secondary Y axis\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.yAxis\n */\n /**\n * Define the visual z index of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highcharts} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n * @sample {highstock} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highstock} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.zIndex\n */\n ''; // include precedent doclets in transpilat\n\n return Series;\n });\n _registerModule(_modules, 'Extensions/ScrollablePlotArea.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Series/Series.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (A, Axis, Chart, Series, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * Highcharts feature to make the Y axis stay fixed when scrolling the chart\n * horizontally on mobile devices. Supports left and right side axes.\n */\n /*\n WIP on vertical scrollable plot area (#9378). To do:\n - Bottom axis positioning\n - Test with Gantt\n - Look for size optimizing the code\n - API and demos\n */\n var stop = A.stop;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n defined = U.defined,\n merge = U.merge,\n pick = U.pick;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n addEvent(Chart, 'afterSetChartSize', function (e) {\n var scrollablePlotArea = this.options.chart.scrollablePlotArea,\n scrollableMinWidth = scrollablePlotArea && scrollablePlotArea.minWidth,\n scrollableMinHeight = scrollablePlotArea && scrollablePlotArea.minHeight,\n scrollablePixelsX,\n scrollablePixelsY,\n corrections;\n if (!this.renderer.forExport) {\n // The amount of pixels to scroll, the difference between chart\n // width and scrollable width\n if (scrollableMinWidth) {\n this.scrollablePixelsX = scrollablePixelsX = Math.max(0, scrollableMinWidth - this.chartWidth);\n if (scrollablePixelsX) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.width = this.plotWidth += scrollablePixelsX;\n if (this.inverted) {\n this.clipBox.height += scrollablePixelsX;\n }\n else {\n this.clipBox.width += scrollablePixelsX;\n }\n corrections = {\n // Corrections for right side\n 1: { name: 'right', value: scrollablePixelsX }\n };\n }\n // Currently we can only do either X or Y\n }\n else if (scrollableMinHeight) {\n this.scrollablePixelsY = scrollablePixelsY = Math.max(0, scrollableMinHeight - this.chartHeight);\n if (defined(scrollablePixelsY)) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.height = this.plotHeight += scrollablePixelsY;\n if (this.inverted) {\n this.clipBox.width += scrollablePixelsY;\n }\n else {\n this.clipBox.height += scrollablePixelsY;\n }\n corrections = {\n 2: { name: 'bottom', value: scrollablePixelsY }\n };\n }\n }\n if (corrections && !e.skipAxes) {\n this.axes.forEach(function (axis) {\n // For right and bottom axes, only fix the plot line length\n if (corrections[axis.side]) {\n // Get the plot lines right in getPlotLinePath,\n // temporarily set it to the adjusted plot width.\n axis.getPlotLinePath = function () {\n var marginName = corrections[axis.side].name,\n correctionValue = corrections[axis.side].value, \n // axis.right or axis.bottom\n margin = this[marginName],\n path;\n // Temporarily adjust\n this[marginName] = margin - correctionValue;\n path = Axis.prototype.getPlotLinePath.apply(this, arguments);\n // Reset\n this[marginName] = margin;\n return path;\n };\n }\n else {\n // Apply the corrected plotWidth\n axis.setAxisSize();\n axis.setAxisTranslation();\n }\n });\n }\n }\n });\n addEvent(Chart, 'render', function () {\n if (this.scrollablePixelsX || this.scrollablePixelsY) {\n if (this.setUpScrolling) {\n this.setUpScrolling();\n }\n this.applyFixed();\n }\n else if (this.fixedDiv) { // Has been in scrollable mode\n this.applyFixed();\n }\n });\n /**\n * @private\n * @function Highcharts.Chart#setUpScrolling\n * @return {void}\n */\n Chart.prototype.setUpScrolling = function () {\n var _this = this;\n var css = {\n WebkitOverflowScrolling: 'touch',\n overflowX: 'hidden',\n overflowY: 'hidden'\n };\n if (this.scrollablePixelsX) {\n css.overflowX = 'auto';\n }\n if (this.scrollablePixelsY) {\n css.overflowY = 'auto';\n }\n // Insert a container with position relative\n // that scrolling and fixed container renders to (#10555)\n this.scrollingParent = createElement('div', {\n className: 'highcharts-scrolling-parent'\n }, {\n position: 'relative'\n }, this.renderTo);\n // Add the necessary divs to provide scrolling\n this.scrollingContainer = createElement('div', {\n 'className': 'highcharts-scrolling'\n }, css, this.scrollingParent);\n // On scroll, reset the chart position because it applies to the scrolled\n // container\n var lastHoverPoint;\n addEvent(this.scrollingContainer, 'scroll', function () {\n if (_this.pointer) {\n delete _this.pointer.chartPosition;\n if (_this.hoverPoint) {\n lastHoverPoint = _this.hoverPoint;\n }\n _this.pointer.runPointActions(void 0, lastHoverPoint, true);\n }\n });\n this.innerContainer = createElement('div', {\n 'className': 'highcharts-inner-container'\n }, null, this.scrollingContainer);\n // Now move the container inside\n this.innerContainer.appendChild(this.container);\n // Don't run again\n this.setUpScrolling = null;\n };\n /**\n * These elements are moved over to the fixed renderer and stay fixed when the\n * user scrolls the chart\n * @private\n */\n Chart.prototype.moveFixedElements = function () {\n var container = this.container,\n fixedRenderer = this.fixedRenderer,\n fixedSelectors = [\n '.highcharts-breadcrumbs-group',\n '.highcharts-contextbutton',\n '.highcharts-credits',\n '.highcharts-legend',\n '.highcharts-legend-checkbox',\n '.highcharts-navigator-series',\n '.highcharts-navigator-xaxis',\n '.highcharts-navigator-yaxis',\n '.highcharts-navigator',\n '.highcharts-reset-zoom',\n '.highcharts-drillup-button',\n '.highcharts-scrollbar',\n '.highcharts-subtitle',\n '.highcharts-title'\n ],\n axisClass;\n if (this.scrollablePixelsX && !this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n else if (this.scrollablePixelsX && this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && !this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n if (axisClass) {\n fixedSelectors.push(\"\" + axisClass + \":not(.highcharts-radial-axis)\", \"\" + axisClass + \"-labels:not(.highcharts-radial-axis-labels)\");\n }\n fixedSelectors.forEach(function (className) {\n [].forEach.call(container.querySelectorAll(className), function (elem) {\n (elem.namespaceURI === fixedRenderer.SVG_NS ?\n fixedRenderer.box :\n fixedRenderer.box.parentNode).appendChild(elem);\n elem.style.pointerEvents = 'auto';\n });\n });\n };\n /**\n * @private\n * @function Highcharts.Chart#applyFixed\n * @return {void}\n */\n Chart.prototype.applyFixed = function () {\n var firstTime = !this.fixedDiv,\n chartOptions = this.options.chart,\n scrollableOptions = chartOptions.scrollablePlotArea,\n Renderer = RendererRegistry.getRendererType();\n var fixedRenderer,\n scrollableWidth,\n scrollableHeight;\n // First render\n if (firstTime) {\n this.fixedDiv = createElement('div', {\n className: 'highcharts-fixed'\n }, {\n position: 'absolute',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: (chartOptions.style && chartOptions.style.zIndex || 0) + 2,\n top: 0\n }, null, true);\n if (this.scrollingContainer) {\n this.scrollingContainer.parentNode.insertBefore(this.fixedDiv, this.scrollingContainer);\n }\n this.renderTo.style.overflow = 'visible';\n this.fixedRenderer = fixedRenderer = new Renderer(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style);\n // Mask\n this.scrollableMask = fixedRenderer\n .path()\n .attr({\n fill: this.options.chart.backgroundColor || '#fff',\n 'fill-opacity': pick(scrollableOptions.opacity, 0.85),\n zIndex: -1\n })\n .addClass('highcharts-scrollable-mask')\n .add();\n addEvent(this, 'afterShowResetZoom', this.moveFixedElements);\n addEvent(this, 'afterApplyDrilldown', this.moveFixedElements);\n addEvent(this, 'afterLayOutTitles', this.moveFixedElements);\n }\n else {\n // Set the size of the fixed renderer to the visible width\n this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);\n }\n if (this.scrollableDirty || firstTime) {\n this.scrollableDirty = false;\n this.moveFixedElements();\n }\n // Increase the size of the scrollable renderer and background\n scrollableWidth = this.chartWidth + (this.scrollablePixelsX || 0);\n scrollableHeight = this.chartHeight + (this.scrollablePixelsY || 0);\n stop(this.container);\n this.container.style.width = scrollableWidth + 'px';\n this.container.style.height = scrollableHeight + 'px';\n this.renderer.boxWrapper.attr({\n width: scrollableWidth,\n height: scrollableHeight,\n viewBox: [0, 0, scrollableWidth, scrollableHeight].join(' ')\n });\n this.chartBackground.attr({\n width: scrollableWidth,\n height: scrollableHeight\n });\n this.scrollingContainer.style.height = this.chartHeight + 'px';\n // Set scroll position\n if (firstTime) {\n if (scrollableOptions.scrollPositionX) {\n this.scrollingContainer.scrollLeft =\n this.scrollablePixelsX *\n scrollableOptions.scrollPositionX;\n }\n if (scrollableOptions.scrollPositionY) {\n this.scrollingContainer.scrollTop =\n this.scrollablePixelsY *\n scrollableOptions.scrollPositionY;\n }\n }\n // Mask behind the left and right side\n var axisOffset = this.axisOffset,\n maskTop = this.plotTop - axisOffset[0] - 1,\n maskLeft = this.plotLeft - axisOffset[3] - 1,\n maskBottom = this.plotTop + this.plotHeight + axisOffset[2] + 1,\n maskRight = this.plotLeft + this.plotWidth + axisOffset[1] + 1,\n maskPlotRight = this.plotLeft + this.plotWidth -\n (this.scrollablePixelsX || 0),\n maskPlotBottom = this.plotTop + this.plotHeight -\n (this.scrollablePixelsY || 0),\n d;\n if (this.scrollablePixelsX) {\n d = [\n // Left side\n ['M', 0, maskTop],\n ['L', this.plotLeft - 1, maskTop],\n ['L', this.plotLeft - 1, maskBottom],\n ['L', 0, maskBottom],\n ['Z'],\n // Right side\n ['M', maskPlotRight, maskTop],\n ['L', this.chartWidth, maskTop],\n ['L', this.chartWidth, maskBottom],\n ['L', maskPlotRight, maskBottom],\n ['Z']\n ];\n }\n else if (this.scrollablePixelsY) {\n d = [\n // Top side\n ['M', maskLeft, 0],\n ['L', maskLeft, this.plotTop - 1],\n ['L', maskRight, this.plotTop - 1],\n ['L', maskRight, 0],\n ['Z'],\n // Bottom side\n ['M', maskLeft, maskPlotBottom],\n ['L', maskLeft, this.chartHeight],\n ['L', maskRight, this.chartHeight],\n ['L', maskRight, maskPlotBottom],\n ['Z']\n ];\n }\n else {\n d = [['M', 0, 0]];\n }\n if (this.redrawTrigger !== 'adjustHeight') {\n this.scrollableMask.attr({ d: d });\n }\n };\n addEvent(Axis, 'afterInit', function () {\n this.chart.scrollableDirty = true;\n });\n addEvent(Series, 'show', function () {\n this.chart.scrollableDirty = true;\n });\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for a scrollable plot area. This feature provides a minimum size for\n * the plot area of the chart. If the size gets smaller than this, typically\n * on mobile devices, a native browser scrollbar is presented. This scrollbar\n * provides smooth scrolling for the contents of the plot area, whereas the\n * title, legend and unaffected axes are fixed.\n *\n * Since v7.1.2, a scrollable plot area can be defined for either horizontal or\n * vertical scrolling, depending on whether the `minWidth` or `minHeight`\n * option is set.\n *\n * @sample highcharts/chart/scrollable-plotarea\n * Scrollable plot area\n * @sample highcharts/chart/scrollable-plotarea-vertical\n * Vertically scrollable plot area\n * @sample {gantt} gantt/chart/scrollable-plotarea-vertical\n * Gantt chart with vertically scrollable plot area\n *\n * @since 6.1.0\n * @product highcharts gantt\n * @apioption chart.scrollablePlotArea\n */\n /**\n * The minimum height for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.minHeight\n */\n /**\n * The minimum width for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.minWidth\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the left and 1 aligns it to the right.\n * Typically we would use 1 if the chart has right aligned Y axes.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.scrollPositionX\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the top and 1 aligns it to the bottom.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.scrollPositionY\n */\n /**\n * The opacity of mask applied on one of the sides of the plot\n * area.\n *\n * @sample {highcharts} highcharts/chart/scrollable-plotarea-opacity\n * Disabled opacity for the mask\n *\n * @type {number}\n * @default 0.85\n * @since 7.1.1\n * @apioption chart.scrollablePlotArea.opacity\n */\n (''); // keep doclets above in transpiled file\n\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackItem.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (FU, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = FU.format;\n var Series = SeriesRegistry.series;\n var destroyObjectProperties = U.destroyObjectProperties,\n pick = U.pick,\n isNumber = U.isNumber;\n /* *\n *\n * Class\n *\n * */\n /**\n * The class for stacks. Each stack, on a specific X value and either negative\n * or positive, has its own stack item.\n * @private\n */\n var StackItem = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function StackItem(axis, options, negativeValue, x, stackOption) {\n var inverted = axis.chart.inverted, reversed = axis.reversed;\n this.axis = axis;\n // The stack goes to the left either if the stack has negative value\n // or when axis is reversed. XOR operator.\n var isNegative = (this.isNegative = !!negativeValue !== !!reversed);\n // Save the options to be able to style the label\n this.options = options = options || {};\n // Save the x value to be able to position the label later\n this.x = x;\n // Initialize total value\n this.total = null;\n this.cumulative = null;\n // This will keep each points' extremes stored by series.index and point\n // index\n this.points = {};\n this.hasValidPoints = false;\n // Save the stack option on the series configuration object,\n // and whether to treat it as percent\n this.stack = stackOption;\n this.leftCliff = 0;\n this.rightCliff = 0;\n // The align options and text align varies on whether the stack is\n // negative and if the chart is inverted or not.\n // First test the user supplied value, then use the dynamic.\n this.alignOptions = {\n align: options.align ||\n (inverted ? (isNegative ? 'left' : 'right') : 'center'),\n verticalAlign: options.verticalAlign ||\n (inverted ? 'middle' : isNegative ? 'bottom' : 'top'),\n y: options.y,\n x: options.x\n };\n this.textAlign =\n options.textAlign ||\n (inverted ? (!isNegative ? 'left' : 'right') : 'center');\n }\n /**\n * @private\n */\n StackItem.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Renders the stack total label and adds it to the stack label group.\n * @private\n */\n StackItem.prototype.render = function (group) {\n var chart = this.axis.chart,\n options = this.options,\n formatOption = options.format, \n // Format the text in the label.\n str = formatOption ?\n format(formatOption,\n this,\n chart) :\n options.formatter.call(this);\n // Change the text to reflect the new total and set visibility to hidden\n // in case the serie is hidden\n if (this.label) {\n this.label.attr({ text: str, visibility: 'hidden' });\n }\n else {\n // Create new label\n this.label = chart.renderer.label(str, null, void 0, options.shape, void 0, void 0, options.useHTML, false, 'stack-labels');\n var attr = {\n r: options.borderRadius || 0,\n text: str,\n // set default padding to 5 as it is in datalabels #12308\n padding: pick(options.padding, 5),\n visibility: 'hidden' // hidden until setOffset is called\n };\n if (!chart.styledMode) {\n attr.fill = options.backgroundColor;\n attr.stroke = options.borderColor;\n attr['stroke-width'] = options.borderWidth;\n this.label.css(options.style || {});\n }\n this.label.attr(attr);\n if (!this.label.added) {\n this.label.add(group); // add to the labels-group\n }\n }\n // Rank it higher than data labels (#8742)\n this.label.labelrank = chart.plotSizeY;\n };\n /**\n * Sets the offset that the stack has from the x value and repositions the\n * label.\n * @private\n */\n StackItem.prototype.setOffset = function (xOffset, xWidth, boxBottom, boxTop, defaultX, xAxis) {\n var _a = this,\n alignOptions = _a.alignOptions,\n axis = _a.axis,\n label = _a.label,\n options = _a.options,\n textAlign = _a.textAlign,\n chart = axis.chart,\n stackBox = this.getStackBox({\n xOffset: xOffset,\n width: xWidth,\n boxBottom: boxBottom,\n boxTop: boxTop,\n defaultX: defaultX,\n xAxis: xAxis\n }),\n verticalAlign = alignOptions.verticalAlign;\n if (label && stackBox) {\n var labelBox = label.getBBox(),\n padding = label.padding;\n var isJustify = pick(options.overflow, 'justify') === 'justify',\n visible = void 0;\n // Reset alignOptions property after justify #12337\n alignOptions.x = options.x || 0;\n alignOptions.y = options.y || 0;\n // Calculate the adjusted Stack position, to take into consideration\n // The size if the labelBox and vertical alignment as\n // well as the text alignment. It's need to be done to work with\n // default SVGLabel.align/justify methods.\n var _b = this.adjustStackPosition({\n labelBox: labelBox,\n verticalAlign: verticalAlign,\n textAlign: textAlign\n }),\n x = _b.x,\n y = _b.y;\n stackBox.x -= x;\n stackBox.y -= y;\n // Align the label to the adjusted box.\n label.align(alignOptions, false, stackBox);\n // Check if label is inside the plotArea #12294\n visible = chart.isInsidePlot(label.alignAttr.x + alignOptions.x + x, label.alignAttr.y + alignOptions.y + y);\n if (!visible) {\n isJustify = false;\n }\n if (isJustify) {\n // Justify stackLabel into the stackBox\n Series.prototype.justifyDataLabel.call(axis, label, alignOptions, label.alignAttr, labelBox, stackBox);\n }\n // Add attr to aviod the default animation of justifyDataLabel.\n // Also add correct rotation with its rotation origin. #15129\n label.attr({\n x: label.alignAttr.x,\n y: label.alignAttr.y,\n rotation: options.rotation,\n rotationOriginX: labelBox.width / 2,\n rotationOriginY: labelBox.height / 2\n });\n // Check if the dataLabel should be visible.\n if (pick(!isJustify && options.crop, true)) {\n visible =\n isNumber(label.x) &&\n isNumber(label.y) &&\n chart.isInsidePlot(label.x - padding + label.width, label.y) &&\n chart.isInsidePlot(label.x + padding, label.y);\n }\n label[visible ? 'show' : 'hide']();\n }\n };\n /**\n * Adjust the stack BBox position, to take into consideration the alignment\n * of the dataLabel. This is necessary to make the stackDataLabel work with\n * core methods like `SVGLabel.adjust` and `Series.justifyDataLabel`.\n * @param AdjustStackPositionProps\n * @return {{x: number, y: number}} Adjusted BBox position of the stack.\n */\n StackItem.prototype.adjustStackPosition = function (_a) {\n var labelBox = _a.labelBox,\n verticalAlign = _a.verticalAlign,\n textAlign = _a.textAlign;\n var factorMap = {\n bottom: 0,\n middle: 1,\n top: 2,\n right: 1,\n center: 0,\n left: -1\n },\n verticalAlignFactor = factorMap[verticalAlign],\n textAlignFactor = factorMap[textAlign];\n return {\n x: labelBox.width / 2 + (labelBox.width / 2) * textAlignFactor,\n y: (labelBox.height / 2) * verticalAlignFactor\n };\n };\n /**\n * Get the bbox of the stack.\n * @private\n * @function Highcharts.StackItem#getStackBox\n * @return {BBoxObject} The x, y, height, width of the stack.\n */\n StackItem.prototype.getStackBox = function (stackBoxProps) {\n var stackItem = this,\n axis = this.axis,\n chart = axis.chart,\n boxTop = stackBoxProps.boxTop,\n defaultX = stackBoxProps.defaultX,\n xOffset = stackBoxProps.xOffset,\n width = stackBoxProps.width,\n boxBottom = stackBoxProps.boxBottom,\n totalStackValue = axis.stacking.usePercentage ?\n 100 :\n pick(boxTop,\n this.total, 0),\n y = axis.toPixels(totalStackValue),\n xAxis = stackBoxProps.xAxis || chart.xAxis[0],\n x = pick(defaultX,\n xAxis.toPixels(this.x)) + xOffset,\n yZero = axis.toPixels(boxBottom ? boxBottom : 0),\n height = Math.abs(y - yZero),\n inverted = chart.inverted,\n neg = stackItem.isNegative;\n return inverted ?\n {\n x: (neg ? y : y - height) - chart.plotLeft,\n y: x - chart.plotTop,\n width: height,\n height: width\n } : {\n x: x - chart.plotLeft,\n y: (neg ? y - height : y) - chart.plotTop,\n width: width,\n height: height\n };\n };\n return StackItem;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Stack of data points\n *\n * @product highcharts\n *\n * @interface Highcharts.StackItemObject\n */ /**\n * Alignment settings\n * @name Highcharts.StackItemObject#alignOptions\n * @type {Highcharts.AlignObject}\n */ /**\n * Related axis\n * @name Highcharts.StackItemObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Cumulative value of the stacked data points\n * @name Highcharts.StackItemObject#cumulative\n * @type {number}\n */ /**\n * True if on the negative side\n * @name Highcharts.StackItemObject#isNegative\n * @type {boolean}\n */ /**\n * Related SVG element\n * @name Highcharts.StackItemObject#label\n * @type {Highcharts.SVGElement}\n */ /**\n * Related stack options\n * @name Highcharts.StackItemObject#options\n * @type {Highcharts.YAxisStackLabelsOptions}\n */ /**\n * Total value of the stacked data points\n * @name Highcharts.StackItemObject#total\n * @type {number}\n */ /**\n * Shared x value of the stack\n * @name Highcharts.StackItemObject#x\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return StackItem;\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackingAxis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (A, Axis, SeriesRegistry, StackItem, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var seriesProto = SeriesRegistry.series.prototype;\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Generate stacks for each series and calculate stacks total values\n *\n * @private\n * @function Highcharts.Chart#getStacks\n */\n function chartGetStacks() {\n var chart = this,\n inverted = chart.inverted;\n // reset stacks for each yAxis\n chart.yAxis.forEach(function (axis) {\n if (axis.stacking && axis.stacking.stacks && axis.hasVisibleSeries) {\n axis.stacking.oldStacks = axis.stacking.stacks;\n }\n });\n chart.series.forEach(function (series) {\n var xAxisOptions = series.xAxis && series.xAxis.options || {};\n if (series.options.stacking &&\n (series.visible === true ||\n chart.options.chart.ignoreHiddenSeries === false)) {\n series.stackKey = [\n series.type,\n pick(series.options.stack, ''),\n inverted ? xAxisOptions.top : xAxisOptions.left,\n inverted ? xAxisOptions.height : xAxisOptions.width\n ].join(',');\n }\n });\n }\n /**\n * @private\n */\n function onAxisDestroy() {\n var stacking = this.stacking;\n if (!stacking) {\n return;\n }\n var stacks = stacking.stacks;\n // Destroy each stack total\n objectEach(stacks, function (stack, stackKey) {\n destroyObjectProperties(stack);\n stacks[stackKey] = null;\n });\n if (stacking &&\n stacking.stackTotalGroup) {\n stacking.stackTotalGroup.destroy();\n }\n }\n /**\n * @private\n */\n function onAxisInit() {\n if (this.coll === 'yAxis' && !this.stacking) {\n this.stacking = new AxisAdditions(this);\n }\n }\n /**\n * Get stack indicator, according to it's x-value, to determine points with the\n * same x-value\n *\n * @private\n * @function Highcharts.Series#getStackIndicator\n */\n function seriesGetStackIndicator(stackIndicator, x, index, key) {\n // Update stack indicator, when:\n // first point in a stack || x changed || stack type (negative vs positive)\n // changed:\n if (!defined(stackIndicator) ||\n stackIndicator.x !== x ||\n (key && stackIndicator.stackKey !== key)) {\n stackIndicator = {\n x: x,\n index: 0,\n key: key,\n stackKey: key\n };\n }\n else {\n (stackIndicator).index++;\n }\n stackIndicator.key =\n [index, x, stackIndicator.index].join(',');\n return stackIndicator;\n }\n /**\n * Iterate over all stacks and compute the absolute values to percent\n *\n * @private\n * @function Highcharts.Series#modifyStacks\n */\n function seriesModifyStacks() {\n var series = this,\n yAxis = series.yAxis,\n stackKey = series.stackKey,\n stacks = yAxis.stacking.stacks,\n processedXData = series.processedXData,\n stacking = series.options.stacking,\n stacker = series[stacking + 'Stacker'];\n var stackIndicator;\n if (stacker) { // Modifier function exists (Series.percentStacker etc.)\n [stackKey, '-' + stackKey].forEach(function (key) {\n var i = processedXData.length,\n x,\n stack,\n pointExtremes;\n while (i--) {\n x = processedXData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index, key);\n stack = stacks[key] && stacks[key][x];\n pointExtremes =\n stack && stack.points[stackIndicator.key];\n if (pointExtremes) {\n stacker.call(series, pointExtremes, stack, i);\n }\n }\n });\n }\n }\n /**\n * Modifier function for percent stacks. Blows up the stack to 100%.\n *\n * @private\n * @function Highcharts.Series#percentStacker\n */\n function seriesPercentStacker(pointExtremes, stack, i) {\n var totalFactor = stack.total ? 100 / stack.total : 0;\n // Y bottom value\n pointExtremes[0] = correctFloat(pointExtremes[0] * totalFactor);\n // Y value\n pointExtremes[1] = correctFloat(pointExtremes[1] * totalFactor);\n this.stackedYData[i] = pointExtremes[1];\n }\n /**\n * Set grouped points in a stack-like object. When `centerInCategory` is true,\n * and `stacking` is not enabled, we need a pseudo (horizontal) stack in order\n * to handle grouping of points within the same category.\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n * @return {void}\n */\n function seriesSetGroupedPoints() {\n var stacking = this.yAxis.stacking;\n if (this.options.centerInCategory &&\n (this.is('column') || this.is('columnrange')) &&\n // With stacking enabled, we already have stacks that we can compute\n // from\n !this.options.stacking &&\n // With only one series, we don't need to consider centerInCategory\n this.chart.series.length > 1) {\n seriesProto.setStackedPoints.call(this, 'group');\n // After updating, if we now have proper stacks, we must delete the group\n // pseudo stacks (#14986)\n }\n else if (stacking) {\n objectEach(stacking.stacks, function (type, key) {\n if (key.slice(-5) === 'group') {\n objectEach(type, function (stack) { return stack.destroy(); });\n delete stacking.stacks[key];\n }\n });\n }\n }\n /**\n * Adds series' points value to corresponding stack\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n */\n function seriesSetStackedPoints(stackingParam) {\n var chart = this.chart,\n stacking = stackingParam || this.options.stacking;\n if (!stacking || (this.visible !== true &&\n chart.options.chart.ignoreHiddenSeries !== false)) {\n return;\n }\n var series = this, xData = series.processedXData, yData = series.processedYData, stackedYData = [], yDataLength = yData.length, seriesOptions = series.options, threshold = seriesOptions.threshold, stackThreshold = pick(seriesOptions.startFromThreshold && threshold, 0), stackOption = seriesOptions.stack, stackKey = stackingParam ? \"\" + series.type + \",\".concat(stacking) : series.stackKey, negKey = '-' + stackKey, negStacks = series.negStacks, yAxis = stacking === 'group' ?\n chart.yAxis[0] :\n series.yAxis, stacks = yAxis.stacking.stacks, oldStacks = yAxis.stacking.oldStacks;\n var stackIndicator,\n isNegative,\n stack,\n other,\n key,\n pointKey,\n i,\n x,\n y;\n yAxis.stacking.stacksTouched += 1;\n // loop over the non-null y values and read them into a local array\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index);\n pointKey = stackIndicator.key;\n // Read stacked values into a stack based on the x value,\n // the sign of y and the stack key. Stacking is also handled for null\n // values (#739)\n isNegative = negStacks && y < (stackThreshold ? 0 : threshold);\n key = isNegative ? negKey : stackKey;\n // Create empty object for this stack if it doesn't exist yet\n if (!stacks[key]) {\n stacks[key] = {};\n }\n // Initialize StackItem for this x\n if (!stacks[key][x]) {\n if (oldStacks[key] &&\n oldStacks[key][x]) {\n stacks[key][x] = oldStacks[key][x];\n stacks[key][x].total = null;\n }\n else {\n stacks[key][x] = new StackItem(yAxis, yAxis.options.stackLabels, !!isNegative, x, stackOption);\n }\n }\n // If the StackItem doesn't exist, create it first\n stack = stacks[key][x];\n if (y !== null) {\n stack.points[pointKey] = stack.points[series.index] =\n [pick(stack.cumulative, stackThreshold)];\n // Record the base of the stack\n if (!defined(stack.cumulative)) {\n stack.base = pointKey;\n }\n stack.touched = yAxis.stacking.stacksTouched;\n // In area charts, if there are multiple points on the same X value,\n // let the area fill the full span of those points\n if (stackIndicator.index > 0 && series.singleStacks === false) {\n stack.points[pointKey][0] =\n stack.points[series.index + ',' + x + ',0'][0];\n }\n // When updating to null, reset the point stack (#7493)\n }\n else {\n stack.points[pointKey] = stack.points[series.index] =\n null;\n }\n // Add value to the stack total\n if (stacking === 'percent') {\n // Percent stacked column, totals are the same for the positive and\n // negative stacks\n other = isNegative ? stackKey : negKey;\n if (negStacks && stacks[other] && stacks[other][x]) {\n other = stacks[other][x];\n stack.total = other.total =\n Math.max(other.total, stack.total) +\n Math.abs(y) ||\n 0;\n // Percent stacked areas\n }\n else {\n stack.total =\n correctFloat(stack.total + (Math.abs(y) || 0));\n }\n }\n else if (stacking === 'group') {\n if (isArray(y)) {\n y = y[0];\n }\n // In this stack, the total is the number of valid points\n if (y !== null) {\n stack.total = (stack.total || 0) + 1;\n }\n }\n else {\n stack.total = correctFloat(stack.total + (y || 0));\n }\n if (stacking === 'group') {\n // This point's index within the stack, pushed to stack.points[1]\n stack.cumulative = (stack.total || 1) - 1;\n }\n else {\n stack.cumulative =\n pick(stack.cumulative, stackThreshold) + (y || 0);\n }\n if (y !== null) {\n stack.points[pointKey].push(stack.cumulative);\n stackedYData[i] = stack.cumulative;\n stack.hasValidPoints = true;\n }\n }\n if (stacking === 'percent') {\n yAxis.stacking.usePercentage = true;\n }\n if (stacking !== 'group') {\n this.stackedYData = stackedYData; // To be used in getExtremes\n }\n // Reset old stacks\n yAxis.stacking.oldStacks = {};\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * Adds stacking support to axes.\n * @private\n * @class\n */\n var AxisAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function AxisAdditions(axis) {\n this.oldStacks = {};\n this.stacks = {};\n this.stacksTouched = 0;\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Build the stacks from top down\n * @private\n */\n AxisAdditions.prototype.buildStacks = function () {\n var stacking = this;\n var axis = stacking.axis;\n var axisSeries = axis.series;\n var reversedStacks = axis.options.reversedStacks;\n var len = axisSeries.length;\n var actualSeries,\n i;\n stacking.usePercentage = false;\n i = len;\n while (i--) {\n actualSeries = axisSeries[reversedStacks ? i : len - i - 1];\n actualSeries.setStackedPoints();\n actualSeries.setGroupedPoints();\n }\n // Loop up again to compute percent and stream stack\n for (i = 0; i < len; i++) {\n axisSeries[i].modifyStacks();\n }\n fireEvent(axis, 'afterBuildStacks');\n };\n /**\n * @private\n */\n AxisAdditions.prototype.cleanStacks = function () {\n var stacking = this;\n var stacks;\n if (stacking.oldStacks) {\n stacks = stacking.stacks = stacking.oldStacks;\n }\n // reset stacks\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.cumulative = stack.total;\n });\n });\n };\n /**\n * Set all the stacks to initial states and destroy unused ones.\n * @private\n */\n AxisAdditions.prototype.resetStacks = function () {\n var _this = this;\n objectEach(this.stacks, function (type) {\n objectEach(type, function (stack, x) {\n // Clean up memory after point deletion (#1044, #4320)\n if (isNumber(stack.touched) &&\n stack.touched < _this.stacksTouched) {\n stack.destroy();\n delete type[x];\n // Reset stacks\n }\n else {\n stack.total = null;\n stack.cumulative = null;\n }\n });\n });\n };\n /**\n * @private\n */\n AxisAdditions.prototype.renderStackTotals = function () {\n var stacking = this,\n axis = stacking.axis,\n chart = axis.chart,\n renderer = chart.renderer,\n stacks = stacking.stacks,\n stackLabelsAnim = axis.options.stackLabels &&\n axis.options.stackLabels.animation,\n animationConfig = getDeferredAnimation(chart,\n stackLabelsAnim || false),\n stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||\n renderer\n .g('stack-labels')\n .attr({\n zIndex: 6,\n opacity: 0\n })\n .add());\n // plotLeft/Top will change when y axis gets wider so we need to\n // translate the stackTotalGroup at every render call. See bug #506\n // and #516\n stackTotalGroup.translate(chart.plotLeft, chart.plotTop);\n // Render each stack total\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.render(stackTotalGroup);\n });\n });\n stackTotalGroup.animate({\n opacity: 1\n }, animationConfig);\n };\n return AxisAdditions;\n }());\n /* *\n *\n * Composition\n *\n * */\n var StackingAxis;\n (function (StackingAxis) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis with stacking support.\n * @private\n */\n function compose(AxisClass, ChartClass, SeriesClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'destroy', onAxisDestroy);\n }\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n var chartProto = ChartClass.prototype;\n chartProto.getStacks = chartGetStacks;\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto_1 = SeriesClass.prototype;\n seriesProto_1.getStackIndicator = seriesGetStackIndicator;\n seriesProto_1.modifyStacks = seriesModifyStacks;\n seriesProto_1.percentStacker = seriesPercentStacker;\n seriesProto_1.setGroupedPoints = seriesSetGroupedPoints;\n seriesProto_1.setStackedPoints = seriesSetStackedPoints;\n }\n }\n StackingAxis.compose = compose;\n })(StackingAxis || (StackingAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return StackingAxis;\n });\n _registerModule(_modules, 'Series/Line/LineSeries.js', [_modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * The line series is the base type and is therefor the series base prototype.\n *\n * @private\n */\n var LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n /* *\n *\n * Static Functions\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draw the graph. Called internally when rendering line-like series\n * types. The first time it generates the `series.graph` item and\n * optionally other series-wide items like `series.area` for area\n * charts. On subsequent calls these items are updated with new\n * positions and attributes.\n *\n * @function Highcharts.Series#drawGraph\n */\n LineSeries.prototype.drawGraph = function () {\n var series = this,\n options = this.options,\n graphPath = (this.gappedPath || this.getGraphPath).call(this),\n styledMode = this.chart.styledMode;\n var props = [[\n 'graph',\n 'highcharts-graph'\n ]];\n // Presentational properties\n if (!styledMode) {\n props[0].push((options.lineColor ||\n this.color ||\n \"#cccccc\" /* Palette.neutralColor20 */ // when colorByPoint = true\n ), options.dashStyle);\n }\n props = series.getZonesGraphs(props);\n // Draw the graph\n props.forEach(function (prop, i) {\n var graphKey = prop[0];\n var attribs,\n graph = series[graphKey];\n var verb = graph ? 'animate' : 'attr';\n if (graph) {\n graph.endX = series.preventGraphAnimation ?\n null :\n graphPath.xMap;\n graph.animate({ d: graphPath });\n }\n else if (graphPath.length) { // #1487\n /**\n * SVG element of area-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone areas, accessible\n * via `series['zone-area-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#area\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * SVG element of line-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone lines, accessible\n * via `series['zone-graph-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#graph\n * @type {Highcharts.SVGElement|undefined}\n */\n series[graphKey] = graph = series.chart.renderer\n .path(graphPath)\n .addClass(prop[1])\n .attr({ zIndex: 1 }) // #1069\n .add(series.group);\n }\n if (graph && !styledMode) {\n attribs = {\n 'stroke': prop[2],\n 'stroke-width': options.lineWidth || 0,\n // Polygon series use filled graph\n 'fill': (series.fillGraph && series.color) || 'none'\n };\n // Apply dash style\n if (prop[3]) {\n attribs.dashstyle = prop[3];\n // The reason for the `else if` is that linecaps don't mix well\n // with dashstyle. The gaps get partially filled by the\n // linecap.\n }\n else if (options.linecap !== 'square') {\n attribs['stroke-linecap'] =\n attribs['stroke-linejoin'] = 'round';\n }\n graph[verb](attribs)\n // Add shadow to normal series (0) or to first\n // zone (1) #3932\n .shadow((i < 2) && options.shadow);\n }\n // Helpers for animation\n if (graph) {\n graph.startX = graphPath.xMap;\n graph.isArea = graphPath.isArea; // For arearange animation\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the graph path.\n *\n * @private\n */\n LineSeries.prototype.getGraphPath = function (points, nullsAsZeroes, connectCliffs) {\n var series = this,\n options = series.options,\n graphPath = [],\n xMap = [];\n var gap,\n step = options.step;\n points = points || series.points;\n // Bottom of a stack is reversed\n var reversed = points.reversed;\n if (reversed) {\n points.reverse();\n }\n // Reverse the steps (#5004)\n step = {\n right: 1,\n center: 2\n }[step] || (step && 3);\n if (step && reversed) {\n step = 4 - step;\n }\n // Remove invalid points, especially in spline (#5015)\n points = this.getValidPoints(points, false, !(options.connectNulls && !nullsAsZeroes && !connectCliffs));\n // Build the line\n points.forEach(function (point, i) {\n var plotX = point.plotX,\n plotY = point.plotY,\n lastPoint = points[i - 1];\n // the path to this point from the previous\n var pathToPoint;\n if ((point.leftCliff || (lastPoint && lastPoint.rightCliff)) &&\n !connectCliffs) {\n gap = true; // ... and continue\n }\n // Line series, nullsAsZeroes is not handled\n if (point.isNull && !defined(nullsAsZeroes) && i > 0) {\n gap = !options.connectNulls;\n // Area series, nullsAsZeroes is set\n }\n else if (point.isNull && !nullsAsZeroes) {\n gap = true;\n }\n else {\n if (i === 0 || gap) {\n pathToPoint = [[\n 'M',\n point.plotX,\n point.plotY\n ]];\n // Generate the spline as defined in the SplineSeries object\n }\n else if (series.getPointSpline) {\n pathToPoint = [series.getPointSpline(points, point, i)];\n }\n else if (step) {\n if (step === 1) { // right\n pathToPoint = [[\n 'L',\n lastPoint.plotX,\n plotY\n ]];\n }\n else if (step === 2) { // center\n pathToPoint = [[\n 'L',\n (lastPoint.plotX + plotX) / 2,\n lastPoint.plotY\n ], [\n 'L',\n (lastPoint.plotX + plotX) / 2,\n plotY\n ]];\n }\n else {\n pathToPoint = [[\n 'L',\n plotX,\n lastPoint.plotY\n ]];\n }\n pathToPoint.push([\n 'L',\n plotX,\n plotY\n ]);\n }\n else {\n // normal line to next point\n pathToPoint = [[\n 'L',\n plotX,\n plotY\n ]];\n }\n // Prepare for animation. When step is enabled, there are\n // two path nodes for each x value.\n xMap.push(point.x);\n if (step) {\n xMap.push(point.x);\n if (step === 2) { // step = center (#8073)\n xMap.push(point.x);\n }\n }\n graphPath.push.apply(graphPath, pathToPoint);\n gap = false;\n }\n });\n graphPath.xMap = xMap;\n series.graphPath = graphPath;\n return graphPath;\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get zones properties for building graphs. Extendable by series with\n * multiple lines within one series.\n *\n * @private\n */\n LineSeries.prototype.getZonesGraphs = function (props) {\n // Add the zone properties if any\n this.zones.forEach(function (zone, i) {\n var propset = [\n 'zone-graph-' + i,\n 'highcharts-graph highcharts-zone-graph-' + i + ' ' +\n (zone.className || '')\n ];\n if (!this.chart.styledMode) {\n propset.push((zone.color || this.color), (zone.dashStyle || this.options.dashStyle));\n }\n props.push(propset);\n }, this);\n return props;\n };\n LineSeries.defaultOptions = merge(Series.defaultOptions, \n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n {\n // nothing here yet\n });\n return LineSeries;\n }(Series));\n SeriesRegistry.registerSeriesType('line', LineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A line series displays information as a series of data points connected by\n * straight line segments.\n *\n * @sample {highcharts} highcharts/demo/line-basic/\n * Line chart\n * @sample {highstock} stock/demo/basic-line/\n * Line chart\n *\n * @extends plotOptions.series\n * @product highcharts highstock\n * @apioption plotOptions.line\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * A `line` series. If the [type](#series.line.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.line\n * @excluding dataParser,dataURL\n * @product highcharts highstock\n * @apioption series.line\n */\n /**\n * An array of data points for the series. For the `line` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 1],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.line.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * **Note:** In TypeScript you have to extend `PointOptionsObject` with an\n * additional declaration to allow custom data types:\n * ```ts\n * declare module `highcharts` {\n * interface PointOptionsObject {\n * custom: Record;\n * }\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @declare Highcharts.PointOptionsObject\n * @type {Array|null|*>}\n * @apioption series.line.data\n */\n /**\n * An additional, individual class name for the data point's graphic\n * representation. Changes to a point's color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.className\n */\n /**\n * Individual color for the point. By default the color is pulled from\n * the global `colors` array.\n *\n * In styled mode, the `color` option doesn't take effect. Instead, use\n * `colorIndex`.\n *\n * @sample {highcharts} highcharts/point/color/\n * Mark the highest point\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock gantt\n * @apioption series.line.data.color\n */\n /**\n * A specific color index to use for the point, so its graphic representations\n * are given the class name `highcharts-color-{n}`. In styled mode this will\n * change the color of the graphic. In non-styled mode, the color is set by the\n * `fill` attribute, so the change in class name won't have a visual effect by\n * default.\n *\n * @sample {highcharts} highcharts/css/colorindex/\n * Series and point color index\n *\n * @type {number}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.colorIndex\n */\n /**\n * A reserved subspace to store options and values for customized functionality.\n * Here you can add additional data for your own event callbacks and formatter\n * callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption series.line.data.custom\n */\n /**\n * Individual data label for each point. The options are the same as\n * the ones for [plotOptions.series.dataLabels](\n * #plotOptions.series.dataLabels).\n *\n * @sample highcharts/point/datalabels/\n * Show a label for the last value\n *\n * @declare Highcharts.DataLabelsOptions\n * @extends plotOptions.line.dataLabels\n * @product highcharts highstock gantt\n * @apioption series.line.data.dataLabels\n */\n /**\n * A description of the point to add to the screen reader information\n * about the point.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption series.line.data.description\n */\n /**\n * An id for the point. This can be used after render time to get a\n * pointer to the point object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/point/id/\n * Remove an id'd point\n *\n * @type {string}\n * @since 1.2.0\n * @product highcharts highstock gantt\n * @apioption series.line.data.id\n */\n /**\n * The rank for this point's data label in case of collision. If two\n * data labels are about to overlap, only the one with the highest `labelrank`\n * will be drawn.\n *\n * @type {number}\n * @apioption series.line.data.labelrank\n */\n /**\n * The name of the point as shown in the legend, tooltip, dataLabels, etc.\n *\n * @see [xAxis.uniqueNames](#xAxis.uniqueNames)\n *\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Point names\n *\n * @type {string}\n * @apioption series.line.data.name\n */\n /**\n * Whether the data point is selected initially.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption series.line.data.selected\n */\n /**\n * The x value of the point. For datetime axes, the X value is the timestamp\n * in milliseconds since 1970.\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.line.data.x\n */\n /**\n * The y value of the point.\n *\n * @type {number|null}\n * @product highcharts highstock\n * @apioption series.line.data.y\n */\n /**\n * The individual point events.\n *\n * @extends plotOptions.series.point.events\n * @product highcharts highstock gantt\n * @apioption series.line.data.events\n */\n /**\n * Options for the point markers of line-like series.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n * @extends plotOptions.series.marker\n * @product highcharts highstock\n * @apioption series.line.data.marker\n */\n ''; // include precedent doclets in transpilat\n\n return LineSeries;\n });\n _registerModule(_modules, 'Series/Area/AreaSeries.js', [_modules['Core/Color/Color.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Color, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var color = Color.parse;\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var extend = U.extend,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Area series type.\n *\n * @private\n * @class\n * @name AreaSeries\n *\n * @augments LineSeries\n */\n var AreaSeries = /** @class */ (function (_super) {\n __extends(AreaSeries, _super);\n function AreaSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Draw the graph and the underlying area. This method calls the Series\n * base function and adds the area. The areaPath is calculated in the\n * getSegmentPath method called from Series.prototype.drawGraph.\n * @private\n */\n AreaSeries.prototype.drawGraph = function () {\n // Define or reset areaPath\n this.areaPath = [];\n // Call the base method\n _super.prototype.drawGraph.apply(this);\n // Define local variables\n var series = this,\n areaPath = this.areaPath,\n options = this.options,\n zones = this.zones,\n props = [[\n 'area',\n 'highcharts-area',\n this.color,\n options.fillColor\n ]]; // area name, main color, fill color\n zones.forEach(function (zone,\n i) {\n props.push([\n 'zone-area-' + i,\n 'highcharts-area highcharts-zone-area-' + i + ' ' +\n zone.className,\n zone.color || series.color,\n zone.fillColor || options.fillColor\n ]);\n });\n props.forEach(function (prop) {\n var areaKey = prop[0],\n attribs = {};\n var area = series[areaKey];\n var verb = area ? 'animate' : 'attr';\n // Create or update the area\n if (area) { // update\n area.endX = series.preventGraphAnimation ?\n null :\n areaPath.xMap;\n area.animate({ d: areaPath });\n }\n else { // create\n attribs.zIndex = 0; // #1069\n area = series[areaKey] = series.chart.renderer\n .path(areaPath)\n .addClass(prop[1])\n .add(series.group);\n area.isArea = true;\n }\n if (!series.chart.styledMode) {\n attribs.fill = pick(prop[3], color(prop[2])\n .setOpacity(pick(options.fillOpacity, 0.75))\n .get());\n }\n area[verb](attribs);\n area.startX = areaPath.xMap;\n area.shiftUnit = options.step ? 2 : 1;\n });\n };\n /**\n * @private\n */\n AreaSeries.prototype.getGraphPath = function (points) {\n var getGraphPath = LineSeries.prototype.getGraphPath, options = this.options, stacking = options.stacking, yAxis = this.yAxis, bottomPoints = [], graphPoints = [], seriesIndex = this.index, stacks = yAxis.stacking.stacks[this.stackKey], threshold = options.threshold, translatedThreshold = Math.round(// #10909\n yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574\n options.connectNulls, stacking === 'percent'), \n // To display null points in underlying stacked series, this\n // series graph must be broken, and the area also fall down to\n // fill the gap left by the null point. #2069\n addDummyPoints = function (i, otherI, side) {\n var point = points[i], stackedValues = stacking &&\n stacks[point.x].points[seriesIndex], nullVal = point[side + 'Null'] || 0, cliffVal = point[side + 'Cliff'] || 0;\n var top,\n bottom,\n isNull = true;\n if (cliffVal || nullVal) {\n top = (nullVal ?\n stackedValues[0] :\n stackedValues[1]) + cliffVal;\n bottom = stackedValues[0] + cliffVal;\n isNull = !!nullVal;\n }\n else if (!stacking &&\n points[otherI] &&\n points[otherI].isNull) {\n top = bottom = threshold;\n }\n // Add to the top and bottom line of the area\n if (typeof top !== 'undefined') {\n graphPoints.push({\n plotX: plotX,\n plotY: top === null ?\n translatedThreshold :\n yAxis.getThreshold(top),\n isNull: isNull,\n isCliff: true\n });\n bottomPoints.push({\n plotX: plotX,\n plotY: bottom === null ?\n translatedThreshold :\n yAxis.getThreshold(bottom),\n doCurve: false // #1041, gaps in areaspline areas\n });\n }\n };\n var plotX,\n isNull,\n yBottom;\n // Find what points to use\n points = points || this.points;\n // Fill in missing points\n if (stacking) {\n points = this.getStackPoints(points);\n }\n for (var i = 0, iEnd = points.length; i < iEnd; ++i) {\n // Reset after series.update of stacking property (#12033)\n if (!stacking) {\n points[i].leftCliff = points[i].rightCliff =\n points[i].leftNull = points[i].rightNull = void 0;\n }\n isNull = points[i].isNull;\n plotX = pick(points[i].rectPlotX, points[i].plotX);\n yBottom = stacking ?\n pick(points[i].yBottom, translatedThreshold) :\n translatedThreshold;\n if (!isNull || connectNulls) {\n if (!connectNulls) {\n addDummyPoints(i, i - 1, 'left');\n }\n // Skip null point when stacking is false and connectNulls\n // true\n if (!(isNull && !stacking && connectNulls)) {\n graphPoints.push(points[i]);\n bottomPoints.push({\n x: i,\n plotX: plotX,\n plotY: yBottom\n });\n }\n if (!connectNulls) {\n addDummyPoints(i, i + 1, 'right');\n }\n }\n }\n var topPath = getGraphPath.call(this,\n graphPoints,\n true,\n true);\n bottomPoints.reversed = true;\n var bottomPath = getGraphPath.call(this,\n bottomPoints,\n true,\n true);\n var firstBottomPoint = bottomPath[0];\n if (firstBottomPoint && firstBottomPoint[0] === 'M') {\n bottomPath[0] = ['L', firstBottomPoint[1], firstBottomPoint[2]];\n }\n var areaPath = topPath.concat(bottomPath);\n if (areaPath.length) {\n areaPath.push(['Z']);\n }\n // TODO: don't set leftCliff and rightCliff when connectNulls?\n var graphPath = getGraphPath\n .call(this,\n graphPoints,\n false,\n connectNulls);\n areaPath.xMap = topPath.xMap;\n this.areaPath = areaPath;\n return graphPath;\n };\n /**\n * Return an array of stacked points, where null and missing points are\n * replaced by dummy points in order for gaps to be drawn correctly in\n * stacks.\n * @private\n */\n AreaSeries.prototype.getStackPoints = function (points) {\n var series = this,\n segment = [],\n keys = [],\n xAxis = this.xAxis,\n yAxis = this.yAxis,\n stack = yAxis.stacking.stacks[this.stackKey],\n pointMap = {},\n yAxisSeries = yAxis.series,\n seriesLength = yAxisSeries.length,\n upOrDown = yAxis.options.reversedStacks ? 1 : -1,\n seriesIndex = yAxisSeries.indexOf(series);\n points = points || this.points;\n if (this.options.stacking) {\n for (var i = 0; i < points.length; i++) {\n // Reset after point update (#7326)\n points[i].leftNull = points[i].rightNull = void 0;\n // Create a map where we can quickly look up the points by\n // their X values.\n pointMap[points[i].x] = points[i];\n }\n // Sort the keys (#1651)\n objectEach(stack, function (stackX, x) {\n // nulled after switching between\n // grouping and not (#1651, #2336)\n if (stackX.total !== null) {\n keys.push(x);\n }\n });\n keys.sort(function (a, b) {\n return a - b;\n });\n var visibleSeries_1 = yAxisSeries.map(function (s) { return s.visible; });\n keys.forEach(function (x, idx) {\n var y = 0,\n stackPoint,\n stackedValues;\n if (pointMap[x] && !pointMap[x].isNull) {\n segment.push(pointMap[x]);\n // Find left and right cliff. -1 goes left, 1 goes\n // right.\n [-1, 1].forEach(function (direction) {\n var nullName = direction === 1 ?\n 'rightNull' :\n 'leftNull',\n cliffName = direction === 1 ?\n 'rightCliff' :\n 'leftCliff',\n otherStack = stack[keys[idx + direction]];\n var cliff = 0;\n // If there is a stack next to this one,\n // to the left or to the right...\n if (otherStack) {\n var i = seriesIndex;\n // Can go either up or down,\n // depending on reversedStacks\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = otherStack.points[si];\n if (!stackPoint) {\n // If the next point in this series is\n // missing, mark the point with\n // point.leftNull or point.rightNull = true.\n if (si === series.index) {\n pointMap[x][nullName] = true;\n // If there are missing points in the next\n // stack in any of the series below this\n // one, we need to substract the missing\n // values and add a hiatus to the left or\n // right.\n }\n else if (visibleSeries_1[i]) {\n stackedValues = stack[x].points[si];\n if (stackedValues) {\n cliff -= (stackedValues[1] -\n stackedValues[0]);\n }\n }\n }\n // When reversedStacks is true, loop up,\n // else loop down\n i += upOrDown;\n }\n }\n pointMap[x][cliffName] = cliff;\n });\n // There is no point for this X value in this series, so we\n // insert a dummy point in order for the areas to be drawn\n // correctly.\n }\n else {\n // Loop down the stack to find the series below this\n // one that has a value (#1991)\n var i = seriesIndex;\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = stack[x].points[si];\n if (stackPoint) {\n y = stackPoint[1];\n break;\n }\n // When reversedStacks is true, loop up, else loop\n // down\n i += upOrDown;\n }\n y = pick(y, 0);\n y = yAxis.translate(// #6272\n y, 0, 1, 0, 1);\n segment.push({\n isNull: true,\n plotX: xAxis.translate(// #6272\n x, 0, 0, 0, 1),\n x: x,\n plotY: y,\n yBottom: y\n });\n }\n });\n }\n return segment;\n };\n /**\n * The area series type.\n *\n * @sample {highcharts} highcharts/demo/area-basic/\n * Area chart\n * @sample {highstock} stock/demo/area/\n * Area chart\n *\n * @extends plotOptions.line\n * @excluding useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.area\n */\n AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, {\n /**\n * @see [fillColor](#plotOptions.area.fillColor)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @apioption plotOptions.area.color\n */\n /**\n * Fill color or gradient for the area. When `null`, the series' `color`\n * is used with the series' `fillOpacity`.\n *\n * In styled mode, the fill color can be set with the `.highcharts-area`\n * class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/\n * Null by default\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.fillColor\n */\n /**\n * Fill opacity for the area. When you set an explicit `fillColor`,\n * the `fillOpacity` is not applied. Instead, you should define the\n * opacity in the `fillColor` with an rgba color definition. The\n * `fillOpacity` setting, also the default setting, overrides the alpha\n * component of the `color` setting.\n *\n * In styled mode, the fill opacity can be set with the\n * `.highcharts-area` class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillopacity/\n * Automatic fill color and fill opacity of 0.1\n *\n * @type {number}\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @product highcharts highstock\n * @apioption plotOptions.area.fillOpacity\n */\n /**\n * A separate color for the graph line. By default the line takes the\n * `color` of the series, but the lineColor setting allows setting a\n * separate color for the line without altering the `fillColor`.\n *\n * In styled mode, the line stroke can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/area-linecolor/\n * Dark gray line\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.lineColor\n */\n /**\n * A separate color for the negative part of the area.\n *\n * In styled mode, a negative color is set with the\n * `.highcharts-negative` class name.\n *\n * @see [negativeColor](#plotOptions.area.negativeColor)\n *\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Negative color in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.area.negativeFillColor\n */\n /**\n * Whether the whole area or just the line should respond to mouseover\n * tooltips and other mouse or touch events.\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/\n * Display the tooltip when the area is hovered\n *\n * @type {boolean}\n * @default false\n * @since 1.1.6\n * @product highcharts highstock\n * @apioption plotOptions.area.trackByArea\n */\n /**\n * The Y axis value to serve as the base for the area, for\n * distinguishing between values above and below a threshold. The area\n * between the graph and the threshold is filled.\n *\n * * If a number is given, the Y axis will scale to the threshold.\n * * If `null`, the scaling behaves like a line series with fill between\n * the graph and the Y axis minimum.\n * * If `Infinity` or `-Infinity`, the area between the graph and the\n * corresponding Y axis extreme is filled (since v6.1.0).\n *\n * @sample {highcharts} highcharts/plotoptions/area-threshold/\n * A threshold of 100\n * @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/\n * A threshold of Infinity\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts highstock\n */\n threshold: 0\n });\n return AreaSeries;\n }(LineSeries));\n extend(AreaSeries.prototype, {\n singleStacks: false,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('area', AreaSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `area` series. If the [type](#series.area.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.area\n * @excluding dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.area\n */\n /**\n * @see [fillColor](#series.area.fillColor)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.color\n */\n /**\n * An array of data points for the series. For the `area` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` * and `pointInterval` given in the series options. If the\n * axis has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 7],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.area.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.area.data\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.fillColor\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillColor](#series.area.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption series.area.fillOpacity\n */\n ''; // adds doclets above to transpilat\n\n return AreaSeries;\n });\n _registerModule(_modules, 'Series/Spline/SplineSeries.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Spline series type.\n *\n * @private\n */\n var SplineSeries = /** @class */ (function (_super) {\n __extends(SplineSeries, _super);\n function SplineSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the spline segment from a given point's previous neighbour to the\n * given point.\n *\n * @private\n * @function Highcharts.seriesTypes.spline#getPointSpline\n */\n SplineSeries.prototype.getPointSpline = function (points, point, i) {\n var \n // 1 means control points midway between points, 2 means 1/3\n // from the point, 3 is 1/4 etc\n smoothing = 1.5,\n denom = smoothing + 1,\n plotX = point.plotX || 0,\n plotY = point.plotY || 0,\n lastPoint = points[i - 1],\n nextPoint = points[i + 1];\n var leftContX,\n leftContY,\n rightContX,\n rightContY;\n /**\n * @private\n */\n function doCurve(otherPoint) {\n return otherPoint &&\n !otherPoint.isNull &&\n otherPoint.doCurve !== false &&\n // #6387, area splines next to null:\n !point.isCliff;\n }\n // Find control points\n if (doCurve(lastPoint) && doCurve(nextPoint)) {\n var lastX = lastPoint.plotX || 0,\n lastY = lastPoint.plotY || 0,\n nextX = nextPoint.plotX || 0,\n nextY = nextPoint.plotY || 0;\n var correction = 0;\n leftContX = (smoothing * plotX + lastX) / denom;\n leftContY = (smoothing * plotY + lastY) / denom;\n rightContX = (smoothing * plotX + nextX) / denom;\n rightContY = (smoothing * plotY + nextY) / denom;\n // Have the two control points make a straight line through main\n // point\n if (rightContX !== leftContX) { // #5016, division by zero\n correction = (((rightContY - leftContY) *\n (rightContX - plotX)) /\n (rightContX - leftContX) + plotY - rightContY);\n }\n leftContY += correction;\n rightContY += correction;\n // to prevent false extremes, check that control points are\n // between neighbouring points' y values\n if (leftContY > lastY && leftContY > plotY) {\n leftContY = Math.max(lastY, plotY);\n // mirror of left control point\n rightContY = 2 * plotY - leftContY;\n }\n else if (leftContY < lastY && leftContY < plotY) {\n leftContY = Math.min(lastY, plotY);\n rightContY = 2 * plotY - leftContY;\n }\n if (rightContY > nextY && rightContY > plotY) {\n rightContY = Math.max(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n else if (rightContY < nextY && rightContY < plotY) {\n rightContY = Math.min(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n // record for drawing in next point\n point.rightContX = rightContX;\n point.rightContY = rightContY;\n }\n // Visualize control points for debugging\n /*\n if (leftContX) {\n this.chart.renderer.circle(\n leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n if (rightContX) {\n this.chart.renderer.circle(\n rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n // */\n var ret = [\n 'C',\n pick(lastPoint.rightContX,\n lastPoint.plotX, 0),\n pick(lastPoint.rightContY,\n lastPoint.plotY, 0),\n pick(leftContX,\n plotX, 0),\n pick(leftContY,\n plotY, 0),\n plotX,\n plotY\n ];\n // reset for updating series later\n lastPoint.rightContX = lastPoint.rightContY = void 0;\n return ret;\n };\n /**\n * A spline series is a special type of line series, where the segments\n * between the data points are smoothed.\n *\n * @sample {highcharts} highcharts/demo/spline-irregular-time/\n * Spline chart\n * @sample {highstock} stock/demo/spline/\n * Spline chart\n *\n * @extends plotOptions.series\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @optionparent plotOptions.spline\n */\n SplineSeries.defaultOptions = merge(LineSeries.defaultOptions);\n return SplineSeries;\n }(LineSeries));\n SeriesRegistry.registerSeriesType('spline', SplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `spline` series. If the [type](#series.spline.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.spline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.spline\n */\n /**\n * An array of data points for the series. For the `spline` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.spline.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 0,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.spline.data\n */\n ''; // adds doclets above intro transpilat\n\n return SplineSeries;\n });\n _registerModule(_modules, 'Series/AreaSpline/AreaSplineSeries.js', [_modules['Series/Spline/SplineSeries.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SplineSeries, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n AreaSeries = _a.area,\n areaProto = _a.area.prototype;\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * AreaSpline series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.areaspline\n *\n * @augments Highcharts.Series\n */\n var AreaSplineSeries = /** @class */ (function (_super) {\n __extends(AreaSplineSeries, _super);\n function AreaSplineSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.points = void 0;\n _this.options = void 0;\n return _this;\n }\n AreaSplineSeries.defaultOptions = merge(SplineSeries.defaultOptions, AreaSeries.defaultOptions);\n return AreaSplineSeries;\n }(SplineSeries));\n extend(AreaSplineSeries.prototype, {\n getGraphPath: areaProto.getGraphPath,\n getStackPoints: areaProto.getStackPoints,\n drawGraph: areaProto.drawGraph,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('areaspline', AreaSplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * The area spline series is an area series where the graph between the\n * points is smoothed into a spline.\n *\n * @sample {highcharts} highcharts/demo/areaspline/\n * Area spline chart\n * @sample {highstock} stock/demo/areaspline/\n * Area spline chart\n *\n * @extends plotOptions.area\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption plotOptions.areaspline\n */\n /**\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.color\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.fillColor\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption plotOptions.areaspline.fillOpacity\n */\n /**\n * A `areaspline` series. If the [type](#series.areaspline.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n *\n * @extends series,plotOptions.areaspline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.areaspline\n */\n /**\n * @see [fillColor](#series.areaspline.fillColor)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.color\n */\n /**\n * An array of data points for the series. For the `areaspline` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 10],\n * [1, 9],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.areaspline.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 4,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.areaspline.data\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.fillColor\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillColor](#series.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption series.areaspline.fillOpacity\n */\n ''; // adds doclets above into transpilat\n\n return AreaSplineSeries;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Column series display one column per value along an X axis.\n *\n * @sample {highcharts} highcharts/demo/column-basic/\n * Column chart\n * @sample {highstock} stock/demo/column/\n * Column chart\n *\n * @extends plotOptions.line\n * @excluding connectEnds, connectNulls, gapSize, gapUnit, linecap,\n * lineWidth, marker, step, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.column\n */\n var ColumnSeriesDefaults = {\n /**\n * The corner radius of the border surrounding each column or bar.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderradius/\n * Rounded columns\n *\n * @product highcharts highstock gantt\n */\n borderRadius: 0,\n /**\n * When using automatic point colors pulled from the global\n * [colors](colors) or series-specific\n * [plotOptions.column.colors](series.colors) collections,\n this option\n * determines whether the chart should receive one color per series or\n * one color per point.\n *\n * In styled mode,\n the `colors` or `series.colors` arrays are not\n * supported,\n and instead this option gives the points individual color\n * class names on the form `highcharts-color-{n}`.\n *\n * @see [series colors](#plotOptions.column.colors)\n *\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @since 2.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colorByPoint\n */\n /**\n * A series specific or series type specific color set to apply instead\n * of the global [colors](#colors) when [colorByPoint](\n * #plotOptions.column.colorByPoint) is true.\n *\n * @type {Array}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colors\n */\n /**\n * When `true`,\n the columns will center in the category,\n ignoring null\n * or missing points. When `false`,\n space will be reserved for null or\n * missing points.\n *\n * @sample {highcharts} highcharts/series-column/centerincategory/\n * Center in category\n *\n * @since 8.0.1\n * @product highcharts highstock gantt\n */\n centerInCategory: false,\n /**\n * Padding between each value groups,\n in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-default/\n * 0.2 by default\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-none/\n * No group padding - all columns are evenly spaced\n *\n * @product highcharts highstock gantt\n */\n groupPadding: 0.2,\n /**\n * Whether to group non-stacked columns or to let them render\n * independent of each other. Non-grouped columns will be laid out\n * individually and overlap each other.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n * @sample {highstock} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.grouping\n */\n /** @ignore-option */\n marker: null,\n /**\n * The maximum allowed pixel width for a column,\n translated to the\n * height of a bar in a bar chart. This prevents the columns from\n * becoming too wide when there is a small number of points in the\n * chart.\n *\n * @see [pointWidth](#plotOptions.column.pointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n * @sample {highstock} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n *\n * @type {number}\n * @since 4.1.8\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.maxPointWidth\n */\n /**\n * Padding between each column or bar,\n in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-default/\n * 0.1 by default\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-025/\n * 0.25\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/\n * 0 for tightly packed columns\n *\n * @product highcharts highstock gantt\n */\n pointPadding: 0.1,\n /**\n * A pixel value specifying a fixed width for each column or bar point.\n * When set to `undefined`,\n the width is calculated from the\n * `pointPadding` and `groupPadding`. The width effects the dimension\n * that is not based on the point value. For column series it is the\n * hoizontal length and for bar series it is the vertical length.\n *\n * @see [maxPointWidth](#plotOptions.column.maxPointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointwidth-20/\n * 20px wide columns regardless of chart width or the amount of\n * data points\n *\n * @type {number}\n * @since 1.2.5\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.pointWidth\n */\n /**\n * A pixel value specifying a fixed width for the column or bar.\n * Overrides pointWidth on the series.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @default undefined\n * @since 7.0.0\n * @product highcharts highstock gantt\n * @apioption series.column.data.pointWidth\n */\n /**\n * The minimal height for a column or width for a bar. By default,\n * 0 values are not shown. To visualize a 0 (or close to zero) point,\n * set the minimal point length to a pixel value like 3\\. In stacked\n * column charts,\n minPointLength might not be respected for tightly\n * packed values.\n *\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength/\n * Zero base value\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength-pos-and-neg/\n * Positive and negative close to zero values\n *\n * @product highcharts highstock gantt\n */\n minPointLength: 0,\n /**\n * When the series contains less points than the crop threshold,\n all\n * points are drawn,\n event if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns),\n is that animation is performed on\n * updates. On the other hand,\n when the series contains more points than\n * the crop threshold,\n the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @product highcharts highstock gantt\n */\n cropThreshold: 50,\n /**\n * The X axis range that each point is valid for. This determines the\n * width of the column. On a categorized axis,\n the range will be 1\n * by default (one category unit). On linear and datetime axes,\n the\n * range will be computed as the distance between the two closest data\n * points.\n *\n * The default `null` means it is computed automatically,\n but this\n * option can be used to override the automatic value.\n *\n * This option is set by default to 1 if data sorting is enabled.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointrange/\n * Set the point range to one day on a data set with one week\n * between the points\n *\n * @type {number|null}\n * @since 2.3\n * @product highcharts highstock gantt\n */\n pointRange: null,\n states: {\n /**\n * Options for the hovered point. These settings override the normal\n * state options when a point is moused over or touched.\n *\n * @extends plotOptions.series.states.hover\n * @excluding halo,\n lineWidth,\n lineWidthPlus,\n marker\n * @product highcharts highstock gantt\n */\n hover: {\n /** @ignore-option */\n halo: false,\n /**\n * A specific border color for the hovered point. Defaults to\n * inherit the normal state border color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.borderColor\n */\n /**\n * A specific color for the hovered point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.color\n */\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode,\n the hover brightening is by default replaced\n * with a fill-opacity set in the `.highcharts-point:hover`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-states-hover-brightness/\n * Brighten by 0.5\n *\n * @product highcharts highstock gantt\n */\n brightness: 0.1\n },\n /**\n * Options for the selected point. These settings override the\n * normal state options when a point is selected.\n *\n * @extends plotOptions.series.states.select\n * @excluding halo,\n lineWidth,\n lineWidthPlus,\n marker\n * @product highcharts highstock gantt\n */\n select: {\n /**\n * A specific color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @product highcharts highstock gantt\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * A specific border color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highcharts highstock gantt\n */\n borderColor: \"#000000\" /* Palette.neutralColor100 */\n }\n },\n dataLabels: {\n align: void 0,\n verticalAlign: void 0,\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @type {number}\n */\n y: void 0\n },\n // false doesn't work well: https://jsfiddle.net/highcharts/hz8fopan/14/\n /** @ignore-option */\n startFromThreshold: true,\n stickyTracking: false,\n tooltip: {\n distance: 6\n },\n /**\n * The Y axis value to serve as the base for the columns,\n for\n * distinguishing between values above and below a threshold. If `null`,\n * the columns extend from the padding Y axis minimum.\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts\n */\n threshold: 0,\n /**\n * The width of the border surrounding each column or bar. Defaults to\n * `1` when there is room for a border,\n but to `0` when the columns are\n * so dense that a border would cover the next column.\n *\n * In styled mode,\n the stroke width can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @default undefined\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.borderWidth\n */\n /**\n * The color of the border surrounding each column or bar.\n *\n * In styled mode,\n the border stroke can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highstock gantt\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */\n };\n /**\n * A `column` series. If the [type](#series.column.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.column\n * @excluding connectNulls, dataParser, dataURL, gapSize, gapUnit, linecap,\n * lineWidth, marker, connectEnds, step\n * @product highcharts highstock\n * @apioption series.column\n */\n /**\n * An array of data points for the series. For the `column` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 6],\n * [1, 2],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.column.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.column.data\n */\n /**\n * The color of the border surrounding the column or bar.\n *\n * In styled mode, the border stroke can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption series.column.data.borderColor\n */\n /**\n * The width of the border surrounding the column or bar.\n *\n * In styled mode, the stroke width can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.column.data.borderWidth\n */\n /**\n * A name for the dash style to use for the column or bar. Overrides\n * dashStyle on the series.\n *\n * In styled mode, the stroke dash-array can be set with the same classes as\n * listed under [data.color](#series.column.data.color).\n *\n * @see [series.pointWidth](#plotOptions.column.dashStyle)\n *\n * @type {Highcharts.DashStyleValue}\n * @apioption series.column.data.dashStyle\n */\n /**\n * A pixel value specifying a fixed width for the column or bar. Overrides\n * pointWidth on the series. The width effects the dimension that is not based\n * on the point value.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @apioption series.column.data.pointWidth\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.hover\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.select\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Series/Column/ColumnSeriesDefaults.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (A, Color, ColumnSeriesDefaults, H, LegendSymbol, Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var animObject = A.animObject;\n var color = Color.parse;\n var hasTouch = H.hasTouch,\n noop = H.noop;\n var clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n objectEach = U.objectEach;\n /* *\n *\n * Class\n *\n * */\n /**\n * The column series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.column\n *\n * @augments Highcharts.Series\n */\n var ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.borderWidth = void 0;\n _this.data = void 0;\n _this.group = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animate the column heights one by one from zero.\n *\n * @private\n * @function Highcharts.seriesTypes.column#animate\n *\n * @param {boolean} init\n * Whether to initialize the animation or run it\n */\n ColumnSeries.prototype.animate = function (init) {\n var series = this,\n yAxis = this.yAxis,\n options = series.options,\n inverted = this.chart.inverted,\n attr = {},\n translateProp = inverted ?\n 'translateX' :\n 'translateY';\n var translateStart,\n translatedThreshold;\n if (init) {\n attr.scaleY = 0.001;\n translatedThreshold = clamp(yAxis.toPixels(options.threshold), yAxis.pos, yAxis.pos + yAxis.len);\n if (inverted) {\n attr.translateX = translatedThreshold - yAxis.len;\n }\n else {\n attr.translateY = translatedThreshold;\n }\n // apply finnal clipping (used in Highcharts Stock) (#7083)\n // animation is done by scaleY, so cliping is for panes\n if (series.clipBox) {\n series.setClip();\n }\n series.group.attr(attr);\n }\n else { // run the animation\n translateStart = Number(series.group.attr(translateProp));\n series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {\n // Do the scale synchronously to ensure smooth\n // updating (#5030, #7228)\n step: function (val, fx) {\n if (series.group) {\n attr[translateProp] = translateStart +\n fx.pos * (yAxis.pos - translateStart);\n series.group.attr(attr);\n }\n }\n }));\n }\n };\n /**\n * Initialize the series. Extends the basic Series.init method by\n * marking other series of the same type as dirty.\n *\n * @private\n * @function Highcharts.seriesTypes.column#init\n */\n ColumnSeries.prototype.init = function (chart, options) {\n _super.prototype.init.apply(this, arguments);\n var series = this;\n chart = series.chart;\n // if the series is added dynamically, force redraw of other\n // series affected by a new column\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n };\n /**\n * Return the width and x offset of the columns adjusted for grouping,\n * groupPadding, pointPadding, pointWidth etc.\n *\n * @private\n * @function Highcharts.seriesTypes.column#getColumnMetrics\n */\n ColumnSeries.prototype.getColumnMetrics = function () {\n var series = this,\n options = series.options,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n reversedStacks = xAxis.options.reversedStacks, \n // Keep backward compatibility: reversed xAxis had reversed\n // stacks\n reverseStacks = (xAxis.reversed && !reversedStacks) ||\n (!xAxis.reversed && reversedStacks),\n stackGroups = {};\n var stackKey,\n columnCount = 0;\n // Get the total number of column type series. This is called on\n // every series. Consider moving this logic to a chart.orderStacks()\n // function and call it on init, addSeries and removeSeries\n if (options.grouping === false) {\n columnCount = 1;\n }\n else {\n series.chart.series.forEach(function (otherSeries) {\n var otherYAxis = otherSeries.yAxis,\n otherOptions = otherSeries.options;\n var columnIndex;\n if (otherSeries.type === series.type &&\n (otherSeries.visible ||\n !series.chart.options.chart.ignoreHiddenSeries) &&\n yAxis.len === otherYAxis.len &&\n yAxis.pos === otherYAxis.pos) { // #642, #2086\n if (otherOptions.stacking &&\n otherOptions.stacking !== 'group') {\n stackKey = otherSeries.stackKey;\n if (typeof stackGroups[stackKey] ===\n 'undefined') {\n stackGroups[stackKey] = columnCount++;\n }\n columnIndex = stackGroups[stackKey];\n }\n else if (otherOptions.grouping !== false) { // #1162\n columnIndex = columnCount++;\n }\n otherSeries.columnIndex = columnIndex;\n }\n });\n }\n var categoryWidth = Math.min(Math.abs(xAxis.transA) * ((xAxis.ordinal && xAxis.ordinal.slope) ||\n options.pointRange ||\n xAxis.closestPointRange ||\n xAxis.tickInterval ||\n 1), // #2610\n xAxis.len // #1535\n ),\n groupPadding = categoryWidth * options.groupPadding,\n groupWidth = categoryWidth - 2 * groupPadding,\n pointOffsetWidth = groupWidth / (columnCount || 1),\n pointWidth = Math.min(options.maxPointWidth || xAxis.len,\n pick(options.pointWidth,\n pointOffsetWidth * (1 - 2 * options.pointPadding))),\n pointPadding = (pointOffsetWidth - pointWidth) / 2, \n // #1251, #3737\n colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0),\n pointXOffset = pointPadding +\n (groupPadding +\n colIndex * pointOffsetWidth -\n (categoryWidth / 2)) * (reverseStacks ? -1 : 1);\n // Save it for reading in linked series (Error bars particularly)\n series.columnMetrics = {\n width: pointWidth,\n offset: pointXOffset,\n paddedWidth: pointOffsetWidth,\n columnCount: columnCount\n };\n return series.columnMetrics;\n };\n /**\n * Make the columns crisp. The edges are rounded to the nearest full\n * pixel.\n *\n * @private\n * @function Highcharts.seriesTypes.column#crispCol\n */\n ColumnSeries.prototype.crispCol = function (x, y, w, h) {\n var chart = this.chart,\n borderWidth = this.borderWidth,\n xCrisp = -(borderWidth % 2 ? 0.5 : 0);\n var right,\n yCrisp = borderWidth % 2 ? 0.5 : 1;\n if (chart.inverted && chart.renderer.isVML) {\n yCrisp += 1;\n }\n // Horizontal. We need to first compute the exact right edge, then\n // round it and compute the width from there.\n if (this.options.crisp) {\n right = Math.round(x + w) + xCrisp;\n x = Math.round(x) + xCrisp;\n w = right - x;\n }\n // Vertical\n var bottom = Math.round(y + h) + yCrisp,\n fromTop = Math.abs(y) <= 0.5 && bottom > 0.5; // #4504, #4656\n y = Math.round(y) + yCrisp;\n h = bottom - y;\n // Top edges are exceptions\n if (fromTop && h) { // #5146\n y -= 1;\n h += 1;\n }\n return {\n x: x,\n y: y,\n width: w,\n height: h\n };\n };\n /**\n * Adjust for missing columns, according to the `centerInCategory`\n * option. Missing columns are either single points or stacks where the\n * point or points are either missing or null.\n *\n * @private\n * @function Highcharts.seriesTypes.column#adjustForMissingColumns\n * @param {number} x\n * The x coordinate of the column, left side\n *\n * @param {number} pointWidth\n * The pointWidth, already computed upstream\n *\n * @param {Highcharts.ColumnPoint} point\n * The point instance\n *\n * @param {Highcharts.ColumnMetricsObject} metrics\n * The series-wide column metrics\n *\n * @return {number}\n * The adjusted x position, or the original if not adjusted\n */\n ColumnSeries.prototype.adjustForMissingColumns = function (x, pointWidth, point, metrics) {\n var _this = this;\n var stacking = this.options.stacking;\n if (!point.isNull && metrics.columnCount > 1) {\n var reversedStacks_1 = this.yAxis.options.reversedStacks;\n var indexInCategory_1 = 0,\n totalInCategory_1 = reversedStacks_1 ? 0 : -metrics.columnCount;\n // Loop over all the stacks on the Y axis. When stacking is enabled,\n // these are real point stacks. When stacking is not enabled, but\n // `centerInCategory` is true, there is one stack handling the\n // grouping of points in each category. This is done in the\n // `setGroupedPoints` function.\n objectEach(this.yAxis.stacking && this.yAxis.stacking.stacks, function (stack) {\n if (typeof point.x === 'number') {\n var stackItem_1 = stack[point.x.toString()];\n if (stackItem_1) {\n var pointValues = stackItem_1.points[_this.index];\n // If true `stacking` is enabled, count the total\n // number of non-null stacks in the category, and\n // note which index this point is within those\n // stacks.\n if (stacking) {\n if (pointValues) {\n indexInCategory_1 = totalInCategory_1;\n }\n if (stackItem_1.hasValidPoints) {\n reversedStacks_1 ? // #16169\n totalInCategory_1++ : totalInCategory_1--;\n }\n // If `stacking` is not enabled, look for the index\n }\n else if (isArray(pointValues)) {\n // If there are multiple points with the same X\n // then gather all series in category, and\n // assign index\n var seriesIndexes = Object\n .keys(stackItem_1.points)\n .filter(function (pointKey) {\n // Filter out duplicate X's\n return !pointKey.match(',') &&\n // Filter out null points\n stackItem_1.points[pointKey] &&\n stackItem_1.points[pointKey].length > 1;\n })\n .map(parseFloat)\n .sort(function (a, b) { return b - a; });\n indexInCategory_1 = seriesIndexes.indexOf(_this.index);\n totalInCategory_1 = seriesIndexes.length;\n }\n }\n }\n });\n // Compute the adjusted x position\n var boxWidth = (totalInCategory_1 - 1) * metrics.paddedWidth +\n pointWidth;\n x = (point.plotX || 0) + boxWidth / 2 - pointWidth -\n indexInCategory_1 * metrics.paddedWidth;\n }\n return x;\n };\n /**\n * Translate each point to the plot area coordinate system and find\n * shape positions\n *\n * @private\n * @function Highcharts.seriesTypes.column#translate\n */\n ColumnSeries.prototype.translate = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n dense = series.dense =\n series.closestPointRange * series.xAxis.transA < 2,\n borderWidth = series.borderWidth = pick(options.borderWidth,\n dense ? 0 : 1 // #3635\n ),\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n threshold = options.threshold,\n translatedThreshold = series.translatedThreshold =\n yAxis.getThreshold(threshold),\n minPointLength = pick(options.minPointLength, 5),\n metrics = series.getColumnMetrics(),\n seriesPointWidth = metrics.width,\n seriesXOffset = series.pointXOffset = metrics.offset,\n dataMin = series.dataMin,\n dataMax = series.dataMax;\n // postprocessed for border width\n var seriesBarW = series.barW =\n Math.max(seriesPointWidth, 1 + 2 * borderWidth);\n if (chart.inverted) {\n translatedThreshold -= 0.5; // #3355\n }\n // When the pointPadding is 0, we want the columns to be packed\n // tightly, so we allow individual columns to have individual sizes.\n // When pointPadding is greater, we strive for equal-width columns\n // (#2694).\n if (options.pointPadding) {\n seriesBarW = Math.ceil(seriesBarW);\n }\n Series.prototype.translate.apply(series);\n // Record the new values\n series.points.forEach(function (point) {\n var yBottom = pick(point.yBottom,\n translatedThreshold),\n safeDistance = 999 + Math.abs(yBottom),\n plotX = point.plotX || 0, \n // Don't draw too far outside plot area (#1303, #2241,\n // #4264)\n plotY = clamp(point.plotY, -safeDistance,\n yAxis.len + safeDistance);\n var up,\n barY = Math.min(plotY,\n yBottom),\n barH = Math.max(plotY,\n yBottom) - barY,\n pointWidth = seriesPointWidth,\n barX = plotX + seriesXOffset,\n barW = seriesBarW;\n // Handle options.minPointLength\n if (minPointLength && Math.abs(barH) < minPointLength) {\n barH = minPointLength;\n up = (!yAxis.reversed && !point.negative) ||\n (yAxis.reversed && point.negative);\n // Reverse zeros if there's no positive value in the series\n // in visible range (#7046)\n if (isNumber(threshold) &&\n isNumber(dataMax) &&\n point.y === threshold &&\n dataMax <= threshold &&\n // and if there's room for it (#7311)\n (yAxis.min || 0) < threshold &&\n // if all points are the same value (i.e zero) not draw\n // as negative points (#10646), but only if there's room\n // for it (#14876)\n (dataMin !== dataMax || (yAxis.max || 0) <= threshold)) {\n up = !up;\n }\n // If stacked...\n barY = (Math.abs(barY - translatedThreshold) > minPointLength ?\n // ...keep position\n yBottom - minPointLength :\n // #1485, #4051\n translatedThreshold -\n (up ? minPointLength : 0));\n }\n // Handle point.options.pointWidth\n // @todo Handle grouping/stacking too. Calculate offset properly\n if (defined(point.options.pointWidth)) {\n pointWidth = barW =\n Math.ceil(point.options.pointWidth);\n barX -= Math.round((pointWidth - seriesPointWidth) / 2);\n }\n // Adjust for null or missing points\n if (options.centerInCategory) {\n barX = series.adjustForMissingColumns(barX, pointWidth, point, metrics);\n }\n // Cache for access in polar\n point.barX = barX;\n point.pointWidth = pointWidth;\n // Fix the tooltip on center of grouped columns (#1216, #424,\n // #3648)\n point.tooltipPos = chart.inverted ?\n [\n clamp(yAxis.len + yAxis.pos - chart.plotLeft - plotY, yAxis.pos - chart.plotLeft, yAxis.len + yAxis.pos - chart.plotLeft),\n xAxis.len + xAxis.pos - chart.plotTop - barX - barW / 2,\n barH\n ] :\n [\n xAxis.left - chart.plotLeft + barX + barW / 2,\n clamp(plotY + yAxis.pos -\n chart.plotTop, yAxis.pos - chart.plotTop, yAxis.len + yAxis.pos - chart.plotTop),\n barH\n ];\n // Register shape type and arguments to be used in drawPoints\n // Allow shapeType defined on pointClass level\n point.shapeType = series.pointClass.prototype.shapeType || 'rect';\n point.shapeArgs = series.crispCol.apply(series, point.isNull ?\n // #3169, drilldown from null must have a position to work\n // from #6585, dataLabel should be placed on xAxis, not\n // floating in the middle of the chart\n [barX, translatedThreshold, barW, 0] :\n [barX, barY, barW, barH]);\n });\n };\n /**\n * Columns have no graph\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawGraph\n */\n ColumnSeries.prototype.drawGraph = function () {\n this.group[this.dense ? 'addClass' : 'removeClass']('highcharts-dense-data');\n };\n /**\n * Get presentational attributes\n *\n * @private\n * @function Highcharts.seriesTypes.column#pointAttribs\n */\n ColumnSeries.prototype.pointAttribs = function (point, state) {\n var options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';\n var stateOptions,\n zone,\n brightness,\n fill = (point && point.color) || this.color, \n // set to fill when borderColor null:\n stroke = ((point && point[strokeOption]) ||\n options[strokeOption] ||\n fill),\n dashstyle = (point && point.options.dashStyle) || options.dashStyle,\n strokeWidth = (point && point[strokeWidthOption]) ||\n options[strokeWidthOption] ||\n this[strokeWidthOption] || 0,\n opacity = pick(point && point.opacity,\n options.opacity, 1);\n // Handle zone colors\n if (point && this.zones.length) {\n zone = point.getZone();\n // When zones are present, don't use point.color (#4267).\n // Changed order (#6527), added support for colorAxis (#10670)\n fill = (point.options.color ||\n (zone && (zone.color || point.nonZonedColor)) ||\n this.color);\n if (zone) {\n stroke = zone.borderColor || stroke;\n dashstyle = zone.dashStyle || dashstyle;\n strokeWidth = zone.borderWidth || strokeWidth;\n }\n }\n // Select or hover states\n if (state && point) {\n stateOptions = merge(options.states[state], \n // #6401\n point.options.states &&\n point.options.states[state] ||\n {});\n brightness = stateOptions.brightness;\n fill =\n stateOptions.color || (typeof brightness !== 'undefined' &&\n color(fill)\n .brighten(stateOptions.brightness)\n .get()) || fill;\n stroke = stateOptions[strokeOption] || stroke;\n strokeWidth =\n stateOptions[strokeWidthOption] || strokeWidth;\n dashstyle = stateOptions.dashStyle || dashstyle;\n opacity = pick(stateOptions.opacity, opacity);\n }\n var ret = {\n fill: fill,\n stroke: stroke,\n 'stroke-width': strokeWidth,\n opacity: opacity\n };\n if (dashstyle) {\n ret.dashstyle = dashstyle;\n }\n return ret;\n };\n /**\n * Draw the columns. For bars, the series.group is rotated, so the same\n * coordinates apply for columns and bars. This method is inherited by\n * scatter series.\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawPoints\n */\n ColumnSeries.prototype.drawPoints = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = this.chart,\n options = series.options,\n renderer = chart.renderer,\n animationLimit = options.animationLimit || 250;\n var shapeArgs;\n // draw the columns\n points.forEach(function (point) {\n var plotY = point.plotY;\n var graphic = point.graphic,\n hasGraphic = !!graphic,\n verb = graphic && chart.pointCount < animationLimit ?\n 'animate' : 'attr';\n if (isNumber(plotY) && point.y !== null) {\n shapeArgs = point.shapeArgs;\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (graphic && point.hasNewShapeType()) {\n graphic = graphic.destroy();\n }\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = series.xAxis.reversed ?\n -(shapeArgs ? (shapeArgs.width || 0) : 0) :\n series.xAxis.width;\n }\n if (!graphic) {\n point.graphic = graphic =\n renderer[point.shapeType](shapeArgs)\n .add(point.group || series.group);\n if (graphic &&\n series.enabledDataSorting &&\n chart.hasRendered &&\n chart.pointCount < animationLimit) {\n graphic.attr({\n x: point.startXPos\n });\n hasGraphic = true;\n verb = 'animate';\n }\n }\n if (graphic && hasGraphic) { // update\n graphic[verb](merge(shapeArgs));\n }\n // Border radius is not stylable (#6900)\n if (options.borderRadius) {\n graphic[verb]({\n r: options.borderRadius\n });\n }\n // Presentational\n if (!chart.styledMode) {\n graphic[verb](series.pointAttribs(point, (point.selected && 'select')))\n .shadow(point.allowShadow !== false && options.shadow, null, options.stacking && !options.borderRadius);\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n });\n };\n /**\n * Draw the tracker for a point.\n * @private\n */\n ColumnSeries.prototype.drawTracker = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n pointer = chart.pointer,\n onMouseOver = function (e) {\n var point = pointer.getPointFromEvent(e);\n // undefined on graph in scatterchart\n if (typeof point !== 'undefined') {\n pointer.isDirectTouch = true;\n point.onMouseOver(e);\n }\n };\n var dataLabels;\n // Add reference to the point\n points.forEach(function (point) {\n dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n if (point.graphic) {\n point.graphic.element.point = point;\n }\n dataLabels.forEach(function (dataLabel) {\n if (dataLabel.div) {\n dataLabel.div.point = point;\n }\n else {\n dataLabel.element.point = point;\n }\n });\n });\n // Add the event listeners, we need to do this only once\n if (!series._hasTracking) {\n series.trackerGroups.forEach(function (key) {\n if (series[key]) {\n // we don't always have dataLabelsGroup\n series[key]\n .addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (hasTouch) {\n series[key].on('touchstart', onMouseOver);\n }\n if (!chart.styledMode && series.options.cursor) {\n series[key]\n .css({ cursor: series.options.cursor });\n }\n }\n });\n series._hasTracking = true;\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Remove this series from the chart\n *\n * @private\n * @function Highcharts.seriesTypes.column#remove\n */\n ColumnSeries.prototype.remove = function () {\n var series = this,\n chart = series.chart;\n // column and bar series affects other series of the same type\n // as they are either stacked or grouped\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n Series.prototype.remove.apply(series, arguments);\n };\n ColumnSeries.defaultOptions = merge(Series.defaultOptions, ColumnSeriesDefaults);\n return ColumnSeries;\n }(Series));\n extend(ColumnSeries.prototype, {\n cropShoulder: 0,\n // When tooltip is not shared, this series (and derivatives) requires\n // direct touch/hover. KD-tree does not apply.\n directTouch: true,\n /**\n * Use a solid rectangle like the area series types\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawLegendSymbol\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Series|Highcharts.Point} item\n * The series (this) or point\n */\n drawLegendSymbol: LegendSymbol.drawRectangle,\n getSymbol: noop,\n // use separate negative stacks, unlike area stacks where a negative\n // point is substracted from previous (#1910)\n negStacks: true,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('column', ColumnSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Adjusted width and x offset of the columns for grouping.\n *\n * @private\n * @interface Highcharts.ColumnMetricsObject\n */ /**\n * Width of the columns.\n * @name Highcharts.ColumnMetricsObject#width\n * @type {number}\n */ /**\n * Offset of the columns.\n * @name Highcharts.ColumnMetricsObject#offset\n * @type {number}\n */\n ''; // detach doclets above\n\n return ColumnSeries;\n });\n _registerModule(_modules, 'Core/Series/DataLabel.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (A, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var format = F.format;\n var defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DataLabel;\n (function (DataLabel) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Align each individual data label.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var series = this,\n chart = this.chart,\n inverted = this.isCartesian && chart.inverted,\n enabledDataSorting = this.enabledDataSorting,\n plotX = point.plotX,\n plotY = point.plotY,\n rotation = options.rotation,\n align = options.align,\n isInsidePlot = defined(plotX) &&\n defined(plotY) &&\n chart.isInsidePlot(plotX,\n Math.round(plotY), {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n }),\n setStartPos = function (alignOptions) {\n if (enabledDataSorting && series.xAxis && !justify) {\n series.setDataLabelStartPos(point,\n dataLabel,\n isNew,\n isInsidePlot,\n alignOptions);\n }\n };\n var baseline,\n rotCorr, // rotation correction\n // Math.round for rounding errors (#2683), alignTo to allow column\n // labels (#2700)\n alignAttr, // the final position;\n justify = pick(options.overflow, (enabledDataSorting ? 'none' : 'justify')) === 'justify', visible = this.visible &&\n point.visible !== false &&\n defined(plotX) &&\n (point.series.forceDL ||\n (enabledDataSorting && !justify) ||\n isInsidePlot ||\n (\n // If the data label is inside the align box, it is\n // enough that parts of the align box is inside the\n // plot area (#12370). When stacking, it is always\n // inside regardless of the option (#15148).\n pick(options.inside, !!this.options.stacking) &&\n alignTo &&\n chart.isInsidePlot(plotX, inverted ?\n alignTo.x + 1 :\n alignTo.y + alignTo.height - 1, {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n })));\n var pos = point.pos();\n if (visible && pos) {\n if (rotation) {\n dataLabel.attr({ align: align });\n }\n var bBox = dataLabel.getBBox(true),\n bBoxCorrection = [0, 0];\n baseline = chart.renderer.fontMetrics(chart.styledMode ? void 0 : options.style.fontSize, dataLabel).b;\n // The alignment box is a singular point\n alignTo = extend({\n x: pos[0],\n y: Math.round(pos[1]),\n width: 0,\n height: 0\n }, alignTo);\n // Add the text size for alignment calculation\n extend(options, {\n width: bBox.width,\n height: bBox.height\n });\n // Allow a hook for changing alignment in the last moment, then do\n // the alignment\n if (rotation) {\n justify = false; // Not supported for rotated text\n rotCorr = chart.renderer.rotCorr(baseline, rotation); // #3723\n alignAttr = {\n x: (alignTo.x +\n (options.x || 0) +\n alignTo.width / 2 +\n rotCorr.x),\n y: (alignTo.y +\n (options.y || 0) +\n { top: 0, middle: 0.5, bottom: 1 }[options.verticalAlign] *\n alignTo.height)\n };\n bBoxCorrection = [\n bBox.x - Number(dataLabel.attr('x')),\n bBox.y - Number(dataLabel.attr('y'))\n ];\n setStartPos(alignAttr); // data sorting\n dataLabel[isNew ? 'attr' : 'animate'](alignAttr);\n }\n else {\n setStartPos(alignTo); // data sorting\n dataLabel.align(options, void 0, alignTo);\n alignAttr = dataLabel.alignAttr;\n }\n // Handle justify or crop\n if (justify && alignTo.height >= 0) { // #8830\n this.justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew);\n // Now check that the data label is within the plot area\n }\n else if (pick(options.crop, true)) {\n var x = alignAttr.x,\n y = alignAttr.y;\n x += bBoxCorrection[0];\n y += bBoxCorrection[1];\n // Uncomment this block to visualize the bounding boxes used for\n // determining visibility\n /*\n chart.renderer.rect(\n chart.plotLeft + alignAttr.x + bBox.x,\n chart.plotTop + alignAttr.y + bBox.y + 9999,\n bBox.width,\n bBox.height\n ).attr({\n stroke: 'rgba(0, 0, 0, 0.3)',\n 'stroke-width': 0.5\n }).add();\n chart.renderer.circle(\n chart.plotLeft + alignAttr.x,\n chart.plotTop + alignAttr.y,\n 2\n ).attr({\n fill: 'red',\n zIndex: 20\n }).add();\n // */\n visible =\n chart.isInsidePlot(x, y, {\n paneCoordinates: true,\n series: series\n }) &&\n chart.isInsidePlot(x + bBox.width, y + bBox.height, {\n paneCoordinates: true,\n series: series\n });\n }\n // When we're using a shape, make it possible with a connector or an\n // arrow pointing to thie point\n if (options.shape && !rotation) {\n dataLabel[isNew ? 'attr' : 'animate']({\n anchorX: pos[0],\n anchorY: pos[1]\n });\n }\n }\n // To use alignAttr property in hideOverlappingLabels\n if (isNew && enabledDataSorting) {\n dataLabel.placed = false;\n }\n // Show or hide based on the final aligned position\n if (!visible && (!enabledDataSorting || justify)) {\n dataLabel.hide();\n dataLabel.placed = false; // don't animate back in\n }\n else {\n dataLabel.show();\n }\n }\n /**\n * Handle the dataLabels.filter option.\n * @private\n */\n function applyFilter(point, options) {\n var filter = options.filter;\n if (filter) {\n var op = filter.operator;\n var prop = point[filter.property];\n var val = filter.value;\n if ((op === '>' && prop > val) ||\n (op === '<' && prop < val) ||\n (op === '>=' && prop >= val) ||\n (op === '<=' && prop <= val) ||\n (op === '==' && prop == val) || // eslint-disable-line eqeqeq\n (op === '===' && prop === val)) {\n return true;\n }\n return false;\n }\n return true;\n }\n /**\n * @private\n */\n function compose(SeriesClass) {\n if (composedClasses.indexOf(SeriesClass) === -1) {\n var seriesProto = SeriesClass.prototype;\n composedClasses.push(SeriesClass);\n seriesProto.alignDataLabel = alignDataLabel;\n seriesProto.drawDataLabels = drawDataLabels;\n seriesProto.justifyDataLabel = justifyDataLabel;\n seriesProto.setDataLabelStartPos = setDataLabelStartPos;\n }\n }\n DataLabel.compose = compose;\n /**\n * Draw the data labels\n * @private\n */\n function drawDataLabels(points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n seriesOptions = series.options,\n hasRendered = series.hasRendered || 0,\n renderer = chart.renderer,\n _a = chart.options.chart,\n backgroundColor = _a.backgroundColor,\n plotBackgroundColor = _a.plotBackgroundColor,\n contrastColor = renderer.getContrast((isString(plotBackgroundColor) && plotBackgroundColor) ||\n (isString(backgroundColor) && backgroundColor) ||\n \"#000000\" /* Palette.neutralColor100 */);\n var seriesDlOptions = seriesOptions.dataLabels,\n pointOptions,\n dataLabelsGroup;\n var dataLabelAnim = seriesDlOptions.animation,\n animationConfig = seriesDlOptions.defer ?\n getDeferredAnimation(chart,\n dataLabelAnim,\n series) :\n { defer: 0,\n duration: 0 };\n // Merge in plotOptions.dataLabels for series\n seriesDlOptions = mergeArrays(mergeArrays(chart.options.plotOptions &&\n chart.options.plotOptions.series &&\n chart.options.plotOptions.series.dataLabels, chart.options.plotOptions &&\n chart.options.plotOptions[series.type] &&\n chart.options.plotOptions[series.type].dataLabels), seriesDlOptions);\n fireEvent(this, 'drawDataLabels');\n if (isArray(seriesDlOptions) ||\n seriesDlOptions.enabled ||\n series._hasPointLabels) {\n // Create a separate group for the data labels to avoid rotation\n dataLabelsGroup = series.plotGroup('dataLabelsGroup', 'data-labels', !hasRendered ? 'hidden' : 'inherit', // #5133, #10220\n seriesDlOptions.zIndex || 6);\n dataLabelsGroup.attr({ opacity: +hasRendered }); // #3300\n if (!hasRendered) {\n var group = series.dataLabelsGroup;\n if (group) {\n if (series.visible) { // #2597, #3023, #3024\n dataLabelsGroup.show();\n }\n group[seriesOptions.animation ? 'animate' : 'attr']({ opacity: 1 }, animationConfig);\n }\n }\n // Make the labels for each point\n points.forEach(function (point) {\n // Merge in series options for the point.\n // @note dataLabelAttribs (like pointAttribs) would eradicate\n // the need for dlOptions, and simplify the section below.\n pointOptions = splat(mergeArrays(seriesDlOptions, \n // dlOptions is used in treemaps\n (point.dlOptions ||\n (point.options && point.options.dataLabels))));\n // Handle each individual data label for this point\n pointOptions.forEach(function (labelOptions, i) {\n // Options for one datalabel\n var labelEnabled = (labelOptions.enabled &&\n // #2282, #4641, #7112, #10049\n (!point.isNull || point.dataLabelOnNull) &&\n applyFilter(point,\n labelOptions)),\n connector = point.connectors ?\n point.connectors[i] :\n point.connector;\n var labelConfig,\n formatString,\n labelText,\n style,\n rotation,\n attr,\n dataLabel = point.dataLabels ?\n point.dataLabels[i] : point.dataLabel,\n isNew = !dataLabel;\n var labelDistance = pick(labelOptions.distance,\n point.labelDistance);\n if (labelEnabled) {\n // Create individual options structure that can be\n // extended without affecting others\n labelConfig = point.getLabelConfig();\n formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);\n labelText = defined(formatString) ?\n format(formatString, labelConfig, chart) :\n (labelOptions[point.formatPrefix + 'Formatter'] ||\n labelOptions.formatter).call(labelConfig, labelOptions);\n style = labelOptions.style;\n rotation = labelOptions.rotation;\n if (!chart.styledMode) {\n // Determine the color\n style.color = pick(labelOptions.color, style.color, series.color, \"#000000\" /* Palette.neutralColor100 */);\n // Get automated contrast color\n if (style.color === 'contrast') {\n point.contrastColor = renderer.getContrast((point.color || series.color));\n style.color = (!defined(labelDistance) &&\n labelOptions.inside) ||\n labelDistance < 0 ||\n !!seriesOptions.stacking ?\n point.contrastColor :\n contrastColor;\n }\n else {\n delete point.contrastColor;\n }\n if (seriesOptions.cursor) {\n style.cursor = seriesOptions.cursor;\n }\n }\n attr = {\n r: labelOptions.borderRadius || 0,\n rotation: rotation,\n padding: labelOptions.padding,\n zIndex: 1\n };\n if (!chart.styledMode) {\n var backgroundColor_1 = labelOptions.backgroundColor,\n borderColor = labelOptions.borderColor;\n attr.fill = backgroundColor_1 === 'auto' ?\n point.color :\n backgroundColor_1;\n attr.stroke = borderColor === 'auto' ?\n point.color :\n borderColor;\n attr['stroke-width'] = labelOptions.borderWidth;\n }\n // Remove unused attributes (#947)\n objectEach(attr, function (val, name) {\n if (typeof val === 'undefined') {\n delete attr[name];\n }\n });\n }\n // If the point is outside the plot area, destroy it. #678,\n // #820\n if (dataLabel && (!labelEnabled ||\n !defined(labelText) ||\n !!dataLabel.div !== !!labelOptions.useHTML ||\n (\n // Change from no rotation to rotation and\n // vice versa. Don't use defined() because\n // rotation = 0 means also rotation = undefined\n (!dataLabel.rotation ||\n !labelOptions.rotation) &&\n dataLabel.rotation !== labelOptions.rotation))) {\n isNew = true;\n point.dataLabel = dataLabel =\n point.dataLabel && point.dataLabel.destroy();\n if (point.dataLabels) {\n // Remove point.dataLabels if this was the last one\n if (point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n else {\n delete point.dataLabels[i];\n }\n }\n if (!i) {\n delete point.dataLabel;\n }\n if (connector) {\n point.connector = point.connector.destroy();\n if (point.connectors) {\n // Remove point.connectors if this was the last\n // one\n if (point.connectors.length === 1) {\n delete point.connectors;\n }\n else {\n delete point.connectors[i];\n }\n }\n }\n }\n // Individual labels are disabled if the are explicitly\n // disabled in the point options, or if they fall outside\n // the plot area.\n if (labelEnabled && defined(labelText)) {\n if (!dataLabel) {\n // Create new label element\n point.dataLabels = point.dataLabels || [];\n dataLabel = point.dataLabels[i] = rotation ?\n // Labels don't rotate, use text element\n renderer.text(labelText, 0, 0, labelOptions.useHTML)\n .addClass('highcharts-data-label') :\n // We can use label\n renderer.label(labelText, 0, 0, labelOptions.shape, null, null, labelOptions.useHTML, null, 'data-label');\n // Store for backwards compatibility\n if (!i) {\n point.dataLabel = dataLabel;\n }\n dataLabel.addClass(' highcharts-data-label-color-' +\n point.colorIndex +\n ' ' + (labelOptions.className || '') +\n ( // #3398\n labelOptions.useHTML ?\n ' highcharts-tracker' :\n ''));\n }\n else {\n // Use old element and just update text\n attr.text = labelText;\n }\n // Store data label options for later access\n dataLabel.options = labelOptions;\n dataLabel.attr(attr);\n if (!chart.styledMode) {\n // Styles must be applied before add in order to\n // read text bounding box\n dataLabel.css(style).shadow(labelOptions.shadow);\n }\n var textPathOptions = labelOptions[point.formatPrefix + 'TextPath'] ||\n labelOptions.textPath;\n if (textPathOptions && !labelOptions.useHTML) {\n dataLabel.setTextPath((point.getDataLabelPath &&\n point.getDataLabelPath(dataLabel)) || point.graphic, textPathOptions);\n if (point.dataLabelPath &&\n !textPathOptions.enabled) {\n // clean the DOM\n point.dataLabelPath = (point.dataLabelPath.destroy());\n }\n }\n if (!dataLabel.added) {\n dataLabel.add(dataLabelsGroup);\n }\n // Now the data label is created and placed at 0,0, so\n // we need to align it\n series.alignDataLabel(point, dataLabel, labelOptions, null, isNew);\n }\n else if (dataLabel) {\n dataLabel.hide();\n }\n });\n });\n }\n fireEvent(this, 'afterDrawDataLabels');\n }\n /**\n * If data labels fall partly outside the plot area, align them back in, in\n * a way that doesn't hide the point.\n * @private\n */\n function justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew) {\n var chart = this.chart,\n align = options.align,\n verticalAlign = options.verticalAlign,\n padding = dataLabel.box ? 0 : (dataLabel.padding || 0);\n var _a = options.x,\n x = _a === void 0 ? 0 : _a,\n _b = options.y,\n y = _b === void 0 ? 0 : _b,\n off,\n justified;\n // Off left\n off = (alignAttr.x || 0) + padding;\n if (off < 0) {\n if (align === 'right' && x >= 0) {\n options.align = 'left';\n options.inside = true;\n }\n else {\n x -= off;\n }\n justified = true;\n }\n // Off right\n off = (alignAttr.x || 0) + bBox.width - padding;\n if (off > chart.plotWidth) {\n if (align === 'left' && x <= 0) {\n options.align = 'right';\n options.inside = true;\n }\n else {\n x += chart.plotWidth - off;\n }\n justified = true;\n }\n // Off top\n off = alignAttr.y + padding;\n if (off < 0) {\n if (verticalAlign === 'bottom' && y >= 0) {\n options.verticalAlign = 'top';\n options.inside = true;\n }\n else {\n y -= off;\n }\n justified = true;\n }\n // Off bottom\n off = (alignAttr.y || 0) + bBox.height - padding;\n if (off > chart.plotHeight) {\n if (verticalAlign === 'top' && y <= 0) {\n options.verticalAlign = 'bottom';\n options.inside = true;\n }\n else {\n y += chart.plotHeight - off;\n }\n justified = true;\n }\n if (justified) {\n options.x = x;\n options.y = y;\n dataLabel.placed = !isNew;\n dataLabel.align(options, void 0, alignTo);\n }\n return justified;\n }\n /**\n * Merge two objects that can be arrays. If one of them is an array, the\n * other is merged into each element. If both are arrays, each element is\n * merged by index. If neither are arrays, we use normal merge.\n * @private\n */\n function mergeArrays(one, two) {\n var res = [],\n i;\n if (isArray(one) && !isArray(two)) {\n res = one.map(function (el) {\n return merge(el, two);\n });\n }\n else if (isArray(two) && !isArray(one)) {\n res = two.map(function (el) {\n return merge(one, el);\n });\n }\n else if (!isArray(one) && !isArray(two)) {\n res = merge(one, two);\n }\n else {\n i = Math.max(one.length, two.length);\n while (i--) {\n res[i] = merge(one[i], two[i]);\n }\n }\n return res;\n }\n /**\n * Set starting position for data label sorting animation.\n * @private\n */\n function setDataLabelStartPos(point, dataLabel, isNew, isInside, alignOptions) {\n var chart = this.chart,\n inverted = chart.inverted,\n xAxis = this.xAxis,\n reversed = xAxis.reversed,\n labelCenter = inverted ? dataLabel.height / 2 : dataLabel.width / 2,\n pointWidth = point.pointWidth,\n halfWidth = pointWidth ? pointWidth / 2 : 0;\n dataLabel.startXPos = inverted ?\n alignOptions.x :\n (reversed ?\n -labelCenter - halfWidth :\n xAxis.width - labelCenter + halfWidth);\n dataLabel.startYPos = inverted ?\n (reversed ?\n this.yAxis.height - labelCenter + halfWidth :\n -labelCenter - halfWidth) : alignOptions.y;\n // We need to handle visibility in case of sorting point outside plot\n // area\n if (!isInside) {\n dataLabel\n .attr({ opacity: 1 })\n .animate({ opacity: 0 }, void 0, dataLabel.hide);\n }\n else if (dataLabel.visibility === 'hidden') {\n dataLabel.show();\n dataLabel\n .attr({ opacity: 0 })\n .animate({ opacity: 1 });\n }\n // Save start position on first render, but do not change position\n if (!chart.hasRendered) {\n return;\n }\n // Set start position\n if (isNew) {\n dataLabel.attr({ x: dataLabel.startXPos, y: dataLabel.startYPos });\n }\n dataLabel.placed = true;\n }\n })(DataLabel || (DataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback JavaScript function to format the data label as a string. Note that\n * if a `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @callback Highcharts.DataLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.PointLabelObject} this\n * Data label context to format\n *\n * @param {Highcharts.DataLabelsOptions} options\n * [API options](/highcharts/plotOptions.series.dataLabels) of the data label\n *\n * @return {number|string|null|undefined}\n * Formatted data label text\n */\n /**\n * Values for handling data labels that flow outside the plot area.\n *\n * @typedef {\"allow\"|\"justify\"} Highcharts.DataLabelsOverflowValue\n */\n ''; // keeps doclets above in JS file\n\n return DataLabel;\n });\n _registerModule(_modules, 'Series/Column/ColumnDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var Series = SeriesRegistry.series;\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Override the basic data label alignment by adjusting for the position of\n * the column.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var inverted = this.chart.inverted,\n series = point.series,\n xLen = (series.xAxis ? series.xAxis.len : this.chart.plotSizeX) || 0,\n yLen = (series.yAxis ? series.yAxis.len : this.chart.plotSizeY) || 0, \n // data label box for alignment\n dlBox = point.dlBox || point.shapeArgs,\n below = pick(point.below, // range series\n point.plotY >\n pick(this.translatedThreshold,\n yLen)), \n // draw it inside the box?\n inside = pick(options.inside, !!this.options.stacking),\n overshoot;\n // Align to the column itself, or the top of it\n if (dlBox) { // Area range uses this method but not alignTo\n alignTo = merge(dlBox);\n if (alignTo.y < 0) {\n alignTo.height += alignTo.y;\n alignTo.y = 0;\n }\n // If parts of the box overshoots outside the plot area, modify the\n // box to center the label inside\n overshoot = alignTo.y + alignTo.height - yLen;\n if (overshoot > 0 && overshoot < alignTo.height) {\n alignTo.height -= overshoot;\n }\n if (inverted) {\n alignTo = {\n x: yLen - alignTo.y - alignTo.height,\n y: xLen - alignTo.x - alignTo.width,\n width: alignTo.height,\n height: alignTo.width\n };\n }\n // Compute the alignment box\n if (!inside) {\n if (inverted) {\n alignTo.x += below ? 0 : alignTo.width;\n alignTo.width = 0;\n }\n else {\n alignTo.y += below ? alignTo.height : 0;\n alignTo.height = 0;\n }\n }\n }\n // When alignment is undefined (typically columns and bars), display the\n // individual point below or above the point depending on the threshold\n options.align = pick(options.align, !inverted || inside ? 'center' : below ? 'right' : 'left');\n options.verticalAlign = pick(options.verticalAlign, inverted || inside ? 'middle' : below ? 'top' : 'bottom');\n // Call the parent method\n Series.prototype.alignDataLabel.call(this, point, dataLabel, options, alignTo, isNew);\n // If label was justified and we have contrast, set it:\n if (options.inside && point.contrastColor) {\n dataLabel.css({\n color: point.contrastColor\n });\n }\n }\n /** @private */\n function compose(ColumnSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(ColumnSeriesClass) === -1) {\n composedClasses.push(ColumnSeriesClass);\n ColumnSeriesClass.prototype.alignDataLabel = alignDataLabel;\n }\n }\n ColumnDataLabel.compose = compose;\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Series/Bar/BarSeries.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Bar series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.bar\n *\n * @augments Highcharts.Series\n */\n var BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /**\n * A bar series is a special type of column series where the columns are\n * horizontal.\n *\n * @sample highcharts/demo/bar-basic/\n * Bar chart\n *\n * @extends plotOptions.column\n * @product highcharts\n * @optionparent plotOptions.bar\n */\n BarSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {\n // nothing here yet\n });\n return BarSeries;\n }(ColumnSeries));\n extend(BarSeries.prototype, {\n inverted: true\n });\n SeriesRegistry.registerSeriesType('bar', BarSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `bar` series. If the [type](#series.bar.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.bar\n * @excluding connectNulls, dashStyle, dataParser, dataURL, gapSize, gapUnit,\n * linecap, lineWidth, marker, connectEnds, step\n * @product highcharts\n * @apioption series.bar\n */\n /**\n * An array of data points for the series. For the `bar` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 5],\n * [1, 10],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.bar.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 10,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.column.data\n * @product highcharts\n * @apioption series.bar.data\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.hover\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.select\n */\n ''; // gets doclets above into transpilat\n\n return BarSeries;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A scatter plot uses cartesian coordinates to display values for two\n * variables for a set of data.\n *\n * @sample {highcharts} highcharts/demo/scatter/\n * Scatter plot\n *\n * @extends plotOptions.line\n * @excluding cropThreshold, pointPlacement, shadow, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.scatter\n */\n var ScatterSeriesDefaults = {\n /**\n * The width of the line connecting the data points.\n *\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-none/\n * 0 by default\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-1/\n * 1px\n *\n * @product highcharts highstock\n */\n lineWidth: 0,\n findNearestPointBy: 'xy',\n /**\n * Apply a jitter effect for the rendered markers. When plotting\n * discrete values,\n a little random noise may help telling the points\n * apart. The jitter setting applies a random displacement of up to `n`\n * axis units in either direction. So for example on a horizontal X\n * axis,\n setting the `jitter.x` to 0.24 will render the point in a\n * random position between 0.24 units to the left and 0.24 units to the\n * right of the true axis position. On a category axis,\n setting it to\n * 0.5 will fill up the bin and make the data appear continuous.\n *\n * When rendered on top of a box plot or a column series,\n a jitter value\n * of 0.24 will correspond to the underlying series' default\n * [groupPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.groupPadding)\n * and [pointPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.pointPadding)\n * settings.\n *\n * @sample {highcharts} highcharts/demo/scatter-jitter\n * Jitter on a scatter plot\n *\n * @sample {highcharts} highcharts/series-scatter/jitter-boxplot\n * Jittered scatter plot on top of a box plot\n *\n * @product highcharts highstock\n * @since 7.0.2\n */\n jitter: {\n /**\n * The maximal X offset for the random jitter effect.\n */\n x: 0,\n /**\n * The maximal Y offset for the random jitter effect.\n */\n y: 0\n },\n marker: {\n enabled: true // Overrides auto-enabling in line series (#3647)\n },\n /**\n * Sticky tracking of mouse events. When true,\n the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series,\n or out of the plot area. When false,\n the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false,\n the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock highmaps\n * @apioption plotOptions.scatter.stickyTracking\n */\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip).\n * Overridable properties are `headerFormat`,\n `pointFormat`,\n * `yDecimals`,\n `xDateFormat`,\n `yPrefix` and `ySuffix`. Unlike other\n * series,\n in a scatter plot the series.name by default shows in the\n * headerFormat and point.x and point.y in the pointFormat.\n *\n * @product highcharts highstock highmaps\n */\n tooltip: {\n /**\n * @product highcharts highstock\n */\n headerFormat: '\\u25CF ' +\n ' {series.name}
',\n pointFormat: 'x: {point.x}
y: {point.y}
'\n }\n };\n /**\n * A `scatter` series. If the [type](#series.scatter.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.scatter\n * @excluding cropThreshold, dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.scatter\n */\n /**\n * An array of data points for the series. For the `scatter` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 0],\n * [1, 8],\n * [2, 9]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.scatter.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.scatter.data\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeries.js', [_modules['Series/Scatter/ScatterSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ScatterSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n ColumnSeries = _a.column,\n LineSeries = _a.line;\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Scatter series type.\n *\n * @private\n */\n var ScatterSeries = /** @class */ (function (_super) {\n __extends(ScatterSeries, _super);\n function ScatterSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Optionally add the jitter effect.\n * @private\n */\n ScatterSeries.prototype.applyJitter = function () {\n var series = this,\n jitter = this.options.jitter,\n len = this.points.length;\n /**\n * Return a repeatable, pseudo-random number based on an integer\n * seed.\n * @private\n */\n function unrandom(seed) {\n var rand = Math.sin(seed) * 10000;\n return rand - Math.floor(rand);\n }\n if (jitter) {\n this.points.forEach(function (point, i) {\n ['x', 'y'].forEach(function (dim, j) {\n var axis,\n plotProp = 'plot' + dim.toUpperCase(),\n min,\n max,\n translatedJitter;\n if (jitter[dim] && !point.isNull) {\n axis = series[dim + 'Axis'];\n translatedJitter =\n jitter[dim] * axis.transA;\n if (axis && !axis.isLog) {\n // Identify the outer bounds of the jitter range\n min = Math.max(0, point[plotProp] - translatedJitter);\n max = Math.min(axis.len, point[plotProp] + translatedJitter);\n // Find a random position within this range\n point[plotProp] = min +\n (max - min) * unrandom(i + j * len);\n // Update clientX for the tooltip k-d-tree\n if (dim === 'x') {\n point.clientX = point.plotX;\n }\n }\n }\n });\n });\n }\n };\n /**\n * @private\n */\n ScatterSeries.prototype.drawGraph = function () {\n if (this.options.lineWidth) {\n _super.prototype.drawGraph.call(this);\n }\n else if (this.graph) {\n this.graph = this.graph.destroy();\n }\n };\n ScatterSeries.defaultOptions = merge(LineSeries.defaultOptions, ScatterSeriesDefaults);\n return ScatterSeries;\n }(LineSeries));\n extend(ScatterSeries.prototype, {\n drawTracker: ColumnSeries.prototype.drawTracker,\n sorted: false,\n requireSorting: false,\n noSharedTooltip: true,\n trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],\n takeOrdinalPosition: false // #2342\n });\n /* *\n *\n * Events\n *\n * */\n /* eslint-disable no-invalid-this */\n addEvent(ScatterSeries, 'afterTranslate', function () {\n this.applyJitter();\n });\n SeriesRegistry.registerSeriesType('scatter', ScatterSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeries;\n });\n _registerModule(_modules, 'Series/CenteredUtilities.js', [_modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (H, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /**\n * @private\n */\n var CenteredUtilities;\n (function (CenteredUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the center of the pie based on the size and center options relative\n * to the plot area. Borrowed by the polar and gauge series types.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getCenter\n */\n function getCenter() {\n var options = this.options,\n chart = this.chart,\n slicingRoom = 2 * (options.slicedOffset || 0),\n plotWidth = chart.plotWidth - 2 * slicingRoom,\n plotHeight = chart.plotHeight - 2 * slicingRoom,\n centerOption = options.center,\n smallestSize = Math.min(plotWidth,\n plotHeight),\n thickness = options.thickness;\n var handleSlicingRoom,\n size = options.size,\n innerSize = options.innerSize || 0,\n i,\n value;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n if (typeof innerSize === 'string') {\n innerSize = parseFloat(innerSize);\n }\n var positions = [\n pick(centerOption[0], '50%'),\n pick(centerOption[1], '50%'),\n // Prevent from negative values\n pick(size && size < 0 ? void 0 : options.size, '100%'),\n pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')\n ];\n // No need for inner size in angular (gauges) series but still required\n // for pie series\n if (chart.angular && !(this instanceof Series)) {\n positions[3] = 0;\n }\n for (i = 0; i < 4; ++i) {\n value = positions[i];\n handleSlicingRoom = i < 2 || (i === 2 && /%$/.test(value));\n // i == 0: centerX, relative to width\n // i == 1: centerY, relative to height\n // i == 2: size, relative to smallestSize\n // i == 3: innerSize, relative to size\n positions[i] = relativeLength(value, [plotWidth, plotHeight, smallestSize, positions[2]][i]) + (handleSlicingRoom ? slicingRoom : 0);\n }\n // innerSize cannot be larger than size (#3632)\n if (positions[3] > positions[2]) {\n positions[3] = positions[2];\n }\n // thickness overrides innerSize, need to be less than pie size (#6647)\n if (isNumber(thickness) &&\n thickness * 2 < positions[2] && thickness > 0) {\n positions[3] = positions[2] - thickness * 2;\n }\n fireEvent(this, 'afterGetCenter', { positions: positions });\n return positions;\n }\n CenteredUtilities.getCenter = getCenter;\n /**\n * getStartAndEndRadians - Calculates start and end angles in radians.\n * Used in series types such as pie and sunburst.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians\n *\n * @param {number} [start]\n * Start angle in degrees.\n *\n * @param {number} [end]\n * Start angle in degrees.\n *\n * @return {Highcharts.RadianAngles}\n * Returns an object containing start and end angles as radians.\n */\n function getStartAndEndRadians(start, end) {\n var startAngle = isNumber(start) ? start : 0, // must be a number\n endAngle = ((isNumber(end) && // must be a number\n end > startAngle && // must be larger than the start angle\n // difference must be less than 360 degrees\n (end - startAngle) < 360) ?\n end :\n startAngle + 360),\n correction = -90;\n return {\n start: deg2rad * (startAngle + correction),\n end: deg2rad * (endAngle + correction)\n };\n }\n CenteredUtilities.getStartAndEndRadians = getStartAndEndRadians;\n })(CenteredUtilities || (CenteredUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @private\n * @interface Highcharts.RadianAngles\n */ /**\n * @name Highcharts.RadianAngles#end\n * @type {number}\n */ /**\n * @name Highcharts.RadianAngles#start\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return CenteredUtilities;\n });\n _registerModule(_modules, 'Series/Pie/PiePoint.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (A, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var setAnimation = A.setAnimation;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n var PiePoint = /** @class */ (function (_super) {\n __extends(PiePoint, _super);\n function PiePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.labelDistance = void 0;\n _this.options = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extendable method for getting the path of the connector between the\n * data label and the pie slice.\n * @private\n */\n PiePoint.prototype.getConnectorPath = function () {\n var labelPosition = this.labelPosition,\n options = this.series.options.dataLabels,\n predefinedShapes = this.connectorShapes;\n var connectorShape = options.connectorShape;\n // find out whether to use the predefined shape\n if (predefinedShapes[connectorShape]) {\n connectorShape = predefinedShapes[connectorShape];\n }\n return connectorShape.call(this, {\n // pass simplified label position object for user's convenience\n x: labelPosition.final.x,\n y: labelPosition.final.y,\n alignment: labelPosition.alignment\n }, labelPosition.connectorPosition, options);\n };\n /**\n * @private\n */\n PiePoint.prototype.getTranslate = function () {\n return this.sliced ? this.slicedTranslation : {\n translateX: 0,\n translateY: 0\n };\n };\n /**\n * @private\n */\n PiePoint.prototype.haloPath = function (size) {\n var shapeArgs = this.shapeArgs;\n return this.sliced || !this.visible ?\n [] :\n this.series.chart.renderer.symbols.arc(shapeArgs.x, shapeArgs.y, shapeArgs.r + size, shapeArgs.r + size, {\n // Substract 1px to ensure the background is not bleeding\n // through between the halo and the slice (#7495).\n innerR: shapeArgs.r - 1,\n start: shapeArgs.start,\n end: shapeArgs.end\n });\n };\n /**\n * Initialize the pie slice.\n * @private\n */\n PiePoint.prototype.init = function () {\n var _this = this;\n _super.prototype.init.apply(this, arguments);\n this.name = pick(this.name, 'Slice');\n // add event listener for select\n var toggleSlice = function (e) {\n _this.slice(e.type === 'select');\n };\n addEvent(this, 'select', toggleSlice);\n addEvent(this, 'unselect', toggleSlice);\n return this;\n };\n /**\n * Negative points are not valid (#1530, #3623, #5322)\n * @private\n */\n PiePoint.prototype.isValid = function () {\n return isNumber(this.y) && this.y >= 0;\n };\n /**\n * Toggle the visibility of a pie slice or other data point. Note that this\n * method is available only for some series, like pie, treemap and sunburst.\n *\n * @function Highcharts.Point#setVisible\n *\n * @param {boolean} [vis]\n * True to show the pie slice or other data point, false to hide. If\n * undefined, the visibility is toggled.\n *\n * @param {boolean} [redraw] Whether to redraw the chart after the point is\n * altered. If doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw|chart.redraw()} after.\n *\n */\n PiePoint.prototype.setVisible = function (vis, redraw) {\n var _this = this;\n var series = this.series,\n chart = series.chart,\n ignoreHiddenPoint = series.options.ignoreHiddenPoint;\n redraw = pick(redraw, ignoreHiddenPoint);\n if (vis !== this.visible) {\n // If called without an argument, toggle visibility\n this.visible = this.options.visible = vis =\n typeof vis === 'undefined' ? !this.visible : vis;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n // Show and hide associated elements. This is performed\n // regardless of redraw or not, because chart.redraw only\n // handles full series.\n ['graphic', 'dataLabel', 'connector', 'shadowGroup'].forEach(function (key) {\n if (_this[key]) {\n _this[key][vis ? 'show' : 'hide'](vis);\n }\n });\n if (this.legendItem) {\n chart.legend.colorizeItem(this, vis);\n }\n // #4170, hide halo after hiding point\n if (!vis && this.state === 'hover') {\n this.setState('');\n }\n // Handle ignore hidden slices\n if (ignoreHiddenPoint) {\n series.isDirty = true;\n }\n if (redraw) {\n chart.redraw();\n }\n }\n };\n /**\n * Set or toggle whether the slice is cut out from the pie.\n * @private\n *\n * @param {boolean} sliced\n * When undefined, the slice state is toggled.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart. True by default.\n *\n * @param {boolean|Partial} [animation]\n * Animation options.\n */\n PiePoint.prototype.slice = function (sliced, redraw, animation) {\n var series = this.series,\n chart = series.chart;\n setAnimation(animation, chart);\n // redraw is true by default\n redraw = pick(redraw, true);\n /**\n * Pie series only. Whether to display a slice offset from the\n * center.\n * @name Highcharts.Point#sliced\n * @type {boolean|undefined}\n */\n // if called without an argument, toggle\n this.sliced = this.options.sliced = sliced =\n defined(sliced) ? sliced : !this.sliced;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n if (this.graphic) {\n this.graphic.animate(this.getTranslate());\n }\n if (this.shadowGroup) {\n this.shadowGroup.animate(this.getTranslate());\n }\n };\n return PiePoint;\n }(Point));\n extend(PiePoint.prototype, {\n connectorShapes: {\n // only one available before v7.0.0\n fixedOffset: function (labelPosition, connectorPosition, options) {\n var breakAt = connectorPosition.breakAt,\n touchingSliceAt = connectorPosition.touchingSliceAt,\n lineSegment = options.softConnector ? [\n 'C',\n // 1st control point (of the curve)\n labelPosition.x +\n // 5 gives the connector a little horizontal bend\n (labelPosition.alignment === 'left' ? -5 : 5),\n labelPosition.y,\n 2 * breakAt.x - touchingSliceAt.x,\n 2 * breakAt.y - touchingSliceAt.y,\n breakAt.x,\n breakAt.y //\n ] : [\n 'L',\n breakAt.x,\n breakAt.y\n ];\n // assemble the path\n return ([\n ['M', labelPosition.x, labelPosition.y],\n lineSegment,\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ]);\n },\n straight: function (labelPosition, connectorPosition) {\n var touchingSliceAt = connectorPosition.touchingSliceAt;\n // direct line to the slice\n return [\n ['M', labelPosition.x, labelPosition.y],\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ];\n },\n crookedLine: function (labelPosition, connectorPosition, options) {\n var touchingSliceAt = connectorPosition.touchingSliceAt,\n series = this.series,\n pieCenterX = series.center[0],\n plotWidth = series.chart.plotWidth,\n plotLeft = series.chart.plotLeft,\n alignment = labelPosition.alignment,\n radius = this.shapeArgs.r,\n crookDistance = relativeLength(// % to fraction\n options.crookDistance, 1),\n crookX = alignment === 'left' ?\n pieCenterX + radius + (plotWidth + plotLeft -\n pieCenterX - radius) * (1 - crookDistance) :\n plotLeft + (pieCenterX - radius) * crookDistance,\n segmentWithCrook = [\n 'L',\n crookX,\n labelPosition.y\n ];\n var useCrook = true;\n // crookedLine formula doesn't make sense if the path overlaps\n // the label - use straight line instead in that case\n if (alignment === 'left' ?\n (crookX > labelPosition.x || crookX < touchingSliceAt.x) :\n (crookX < labelPosition.x || crookX > touchingSliceAt.x)) {\n useCrook = false;\n }\n // assemble the path\n var path = [['M',\n labelPosition.x,\n labelPosition.y]];\n if (useCrook) {\n path.push(segmentWithCrook);\n }\n path.push(['L', touchingSliceAt.x, touchingSliceAt.y]);\n return path;\n }\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return PiePoint;\n });\n _registerModule(_modules, 'Series/Pie/PieSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A pie chart is a circular graphic which is divided into slices to\n * illustrate numerical proportion.\n *\n * @sample highcharts/demo/pie-basic/\n * Pie chart\n *\n * @extends plotOptions.line\n * @excluding animationLimit, boostThreshold, connectEnds, connectNulls,\n * cropThreshold, dashStyle, dataSorting, dragDrop,\n * findNearestPointBy, getExtremesFromAll, label, lineWidth,\n * linkedTo, marker, negativeColor, pointInterval,\n * pointIntervalUnit, pointPlacement, pointStart,\n * softThreshold, stacking, step, threshold, turboThreshold,\n * zoneAxis, zones, dataSorting, boostBlending\n * @product highcharts highmaps\n * @optionparent plotOptions.pie\n *\n * @private\n */\n var PieSeriesDefaults = {\n /**\n * @excluding legendItemClick\n * @apioption plotOptions.pie.events\n */\n /**\n * Fires when the checkbox next to the point name in the legend is\n * clicked. One parameter, event, is passed to the function. The state\n * of the checkbox is found by event.checked. The checked item is found\n * by event.item. Return false to prevent the default action which is to\n * toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Function}\n * @since 1.2.0\n * @product highcharts highmaps\n * @context Highcharts.Point\n * @apioption plotOptions.pie.events.checkboxClick\n */\n /**\n * Fires when the legend item belonging to the pie point (slice) is\n * clicked. The `this` keyword refers to the point itself. One\n * parameter, `event`, is passed to the function, containing common\n * event information. The default action is to toggle the visibility of\n * the point. This can be prevented by calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-point-events-legenditemclick/\n * Confirm toggle visibility\n *\n * @type {Highcharts.PointLegendItemClickCallbackFunction}\n * @since 1.2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.point.events.legendItemClick\n */\n /**\n * The center of the pie chart relative to the plot area. Can be\n * percentages or pixel values. The default behaviour (as of 3.0) is to\n * center the pie so that all slices and data labels are within the plot\n * area. As a consequence, the pie may actually jump around in a chart\n * with dynamic values, as the data labels move. In that case, the\n * center should be explicitly set, for example to `[\"50%\", \"50%\"]`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-center/\n * Centered at 100, 100\n *\n * @type {Array<(number|string|null),(number|string|null)>}\n * @default [null, null]\n * @product highcharts highmaps\n *\n * @private\n */\n center: [null, null],\n /**\n * The color of the pie series. A pie series is represented as an empty\n * circle if the total sum of its values is 0. Use this property to\n * define the color of its border.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @apioption plotOptions.pie.color\n */\n /**\n * @product highcharts\n *\n * @private\n */\n clip: false,\n /**\n * @ignore-option\n *\n * @private\n */\n colorByPoint: true,\n /**\n * A series specific or series type specific color set to use instead\n * of the global [colors](#colors).\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome/\n * Set default colors for all pies\n *\n * @type {Array}\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.colors\n */\n /**\n * @declare Highcharts.SeriesPieDataLabelsOptionsObject\n * @extends plotOptions.series.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @private\n */\n dataLabels: {\n /**\n * Alignment method for data labels. Possible values are:\n *\n * - `plotEdges`: Each label touches the nearest vertical edge of\n * the plot area.\n *\n * - `connectors`: Connectors have the same x position and the\n * widest label of each half (left & right) touches the nearest\n * vertical edge of the plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-connectors/\n * alignTo: connectors\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-plotedges/\n * alignTo: plotEdges\n *\n * @type {string}\n * @since 7.0.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.alignTo\n */\n allowOverlap: true,\n /**\n * The color of the line connecting the data label to the pie slice.\n * The default color is the same as the point's color.\n *\n * In styled mode, the connector stroke is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorcolor/\n * Blue connectors\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorColor\n */\n /**\n * The distance from the data label to the connector. Note that\n * data labels also have a default `padding`, so in order for the\n * connector to touch the text, the `padding` must also be 0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorpadding/\n * No padding\n *\n * @since 2.1\n * @product highcharts highmaps\n */\n connectorPadding: 5,\n /**\n * Specifies the method that is used to generate the connector path.\n * Highcharts provides 3 built-in connector shapes: `'fixedOffset'`\n * (default), `'straight'` and `'crookedLine'`. Using\n * `'crookedLine'` has the most sense (in most of the cases) when\n * `'alignTo'` is set.\n *\n * Users can provide their own method by passing a function instead\n * of a String. 3 arguments are passed to the callback:\n *\n * - Object that holds the information about the coordinates of the\n * label (`x` & `y` properties) and how the label is located in\n * relation to the pie (`alignment` property). `alignment` can by\n * one of the following:\n * `'left'` (pie on the left side of the data label),\n * `'right'` (pie on the right side of the data label) or\n * `'center'` (data label overlaps the pie).\n *\n * - Object that holds the information about the position of the\n * connector. Its `touchingSliceAt` porperty tells the position\n * of the place where the connector touches the slice.\n *\n * - Data label options\n *\n * The function has to return an SVG path definition in array form\n * (see the example).\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-string/\n * connectorShape is a String\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-function/\n * connectorShape is a function\n *\n * @type {string|Function}\n * @since 7.0.0\n * @product highcharts highmaps\n */\n connectorShape: 'fixedOffset',\n /**\n * The width of the line connecting the data label to the pie slice.\n *\n * In styled mode, the connector stroke width is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorwidth-disabled/\n * Disable the connector\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {number}\n * @default 1\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorWidth\n */\n /**\n * Works only if `connectorShape` is `'crookedLine'`. It defines how\n * far from the vertical plot edge the coonnector path should be\n * crooked.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-crookdistance/\n * crookDistance set to 90%\n *\n * @since 7.0.0\n * @product highcharts highmaps\n */\n crookDistance: '70%',\n /**\n * The distance of the data label from the pie's edge. Negative\n * numbers put the data label on top of the pie slices. Can also be\n * defined as a percentage of pie's radius. Connectors are only\n * shown for data labels outside the pie.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-distance/\n * Data labels on top of the pie\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highmaps\n */\n distance: 30,\n enabled: true,\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n *\n * @type {string}\n * @default undefined\n * @since 3.0\n * @apioption plotOptions.pie.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that\n * if a `format` is defined, the format takes precedence and the\n * formatter is ignored.\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @default function () { return this.point.isNull ? void 0 : this.point.name; }\n */\n formatter: function () {\n return this.point.isNull ? void 0 : this.point.name;\n },\n /**\n * Whether to render the connector as a soft arc or a line with\n * sharp break. Works only if `connectorShape` equals to\n * `fixedOffset`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-true/\n * Soft\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-false/\n * Non soft\n *\n * @since 2.1.7\n * @product highcharts highmaps\n */\n softConnector: true,\n /**\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow\n * Long labels truncated with an ellipsis\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap\n * Long labels are wrapped\n *\n * @type {Highcharts.CSSObject}\n * @apioption plotOptions.pie.dataLabels.style\n */\n x: 0\n },\n /**\n * If the total sum of the pie's values is 0, the series is represented\n * as an empty circle . The `fillColor` option defines the color of that\n * circle. Use [pie.borderWidth](#plotOptions.pie.borderWidth) to set\n * the border thickness.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @private\n */\n fillColor: void 0,\n /**\n * The end angle of the pie in degrees where 0 is top and 90 is right.\n * Defaults to `startAngle` plus 360.\n *\n * @sample {highcharts} highcharts/demo/pie-semi-circle/\n * Semi-circle donut\n *\n * @type {number}\n * @since 1.3.6\n * @product highcharts highmaps\n * @apioption plotOptions.pie.endAngle\n */\n /**\n * Thickness describing the ring size for a donut type chart,\n * overriding [innerSize](#plotOptions.pie.innerSize).\n *\n * @type {number}\n * @default undefined\n * @product highcharts\n * @since 10.1.0\n * @apioption plotOptions.pie.thickness\n * @private\n */\n /**\n * Equivalent to [chart.ignoreHiddenSeries](#chart.ignoreHiddenSeries),\n * this option tells whether the series shall be redrawn as if the\n * hidden point were `null`.\n *\n * The default value changed from `false` to `true` with Highcharts\n * 3.0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-ignorehiddenpoint/\n * True, the hiddden point is ignored\n *\n * @since 2.3.0\n * @product highcharts highmaps\n *\n * @private\n */\n ignoreHiddenPoint: true,\n /**\n * @ignore-option\n *\n * @private\n */\n inactiveOtherPoints: true,\n /**\n * The size of the inner diameter for the pie. A size greater than 0\n * renders a donut chart. Can be a percentage or pixel value.\n * Percentages are relative to the pie size. Pixel values are given as\n * integers. Setting overridden by thickness.\n *\n *\n * Note: in Highcharts < 4.1.2, the percentage was relative to the plot\n * area, not the pie size.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-80px/\n * 80px inner size\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-50percent/\n * 50% of the plot area\n * @sample {highcharts} highcharts/demo/3d-pie-donut/\n * 3D donut\n *\n * @type {number|string}\n * @default 0\n * @since 2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.innerSize\n */\n /**\n * @ignore-option\n *\n * @private\n */\n legendType: 'point',\n /**\n * @ignore-option\n *\n * @private\n */\n marker: null,\n /**\n * The minimum size for a pie in response to auto margins. The pie will\n * try to shrink to make room for data labels in side the plot area,\n * but only to this size.\n *\n * @type {number|string}\n * @default 80\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.minSize\n */\n /**\n * The diameter of the pie relative to the plot area. Can be a\n * percentage or pixel value. Pixel values are given as integers. The\n * default behaviour (as of 3.0) is to scale to the plot area and give\n * room for data labels within the plot area.\n * [slicedOffset](#plotOptions.pie.slicedOffset) is also included in the\n * default size calculation. As a consequence, the size of the pie may\n * vary when points are updated and data labels more around. In that\n * case it is best to set a fixed value, for example `\"75%\"`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-size/\n * Smaller pie\n *\n * @type {number|string|null}\n * @product highcharts highmaps\n *\n * @private\n */\n size: null,\n /**\n * Whether to display this particular series or series type in the\n * legend. Since 2.1, pies are not shown in the legend by default.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @product highcharts highmaps\n *\n * @private\n */\n showInLegend: false,\n /**\n * If a point is sliced, moved out from the center, how many pixels\n * should it be moved?.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-slicedoffset-20/\n * 20px offset\n *\n * @product highcharts highmaps\n *\n * @private\n */\n slicedOffset: 10,\n /**\n * The start angle of the pie slices in degrees where 0 is top and 90\n * right.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-startangle-90/\n * Start from right\n *\n * @type {number}\n * @default 0\n * @since 2.3.4\n * @product highcharts highmaps\n * @apioption plotOptions.pie.startAngle\n */\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series, or out of the plot area. When false, the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @product highcharts highmaps\n *\n * @private\n */\n stickyTracking: false,\n tooltip: {\n followPointer: true\n },\n /**\n * The color of the border surrounding each slice. When `null`, the\n * border takes the same color as the slice fill. This can be used\n * together with a `borderWidth` to fill drawing gaps created by\n * antialiazing artefacts in borderless pies.\n *\n * In styled mode, the border stroke is given in the `.highcharts-point`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-bordercolor-black/\n * Black border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highmaps\n *\n * @private\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the border surrounding each slice.\n *\n * When setting the border width to 0, there may be small gaps between\n * the slices due to SVG antialiasing artefacts. To work around this,\n * keep the border width at 0.5 or 1, but set the `borderColor` to\n * `null` instead.\n *\n * In styled mode, the border stroke width is given in the\n * `.highcharts-point` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-borderwidth/\n * 3px border\n *\n * @product highcharts highmaps\n *\n * @private\n */\n borderWidth: 1,\n /**\n * @ignore-option\n * @private\n */\n lineWidth: void 0,\n states: {\n /**\n * @extends plotOptions.series.states.hover\n * @excluding marker, lineWidth, lineWidthPlus\n * @product highcharts highmaps\n */\n hover: {\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode, the hover brightness is by default replaced\n * by a fill-opacity given in the `.highcharts-point-hover`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-states-hover-brightness/\n * Brightened by 0.5\n *\n * @product highcharts highmaps\n */\n brightness: 0.1\n }\n }\n };\n /**\n * A `pie` series. If the [type](#series.pie.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.pie\n * @excluding cropThreshold, dataParser, dataURL, linkedTo, stack, xAxis, yAxis,\n * dataSorting, step, boostThreshold, boostBlending\n * @product highcharts highmaps\n * @apioption series.pie\n */\n /**\n * An array of data points for the series. For the `pie` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.pie.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * y: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @excluding marker, x\n * @product highcharts highmaps\n * @apioption series.pie.data\n */\n /**\n * @type {Highcharts.SeriesPieDataLabelsOptionsObject}\n * @product highcharts highmaps\n * @apioption series.pie.data.dataLabels\n */\n /**\n * The sequential index of the data point in the legend.\n *\n * @type {number}\n * @product highcharts highmaps\n * @apioption series.pie.data.legendIndex\n */\n /**\n * Whether to display a slice offset from the center.\n *\n * @sample {highcharts} highcharts/point/sliced/\n * One sliced point\n *\n * @type {boolean}\n * @product highcharts highmaps\n * @apioption series.pie.data.sliced\n */\n /**\n * @extends plotOptions.pie.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @product highcharts highmaps\n * @apioption series.pie.dataLabels\n */\n /**\n * @excluding legendItemClick\n * @product highcharts highmaps\n * @apioption series.pie.events\n */\n ''; // placeholder for transpiled doclets above\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Pie/PieSeries.js', [_modules['Series/CenteredUtilities.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Series/Pie/PiePoint.js'], _modules['Series/Pie/PieSeriesDefaults.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Utilities.js']], function (CU, ColumnSeries, H, LegendSymbol, PiePoint, PieSeriesDefaults, Series, SeriesRegistry, Symbols, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var getStartAndEndRadians = CU.getStartAndEndRadians;\n var noop = H.noop;\n var clamp = U.clamp,\n extend = U.extend,\n fireEvent = U.fireEvent,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n /**\n * Pie series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.pie\n *\n * @augments Highcharts.Series\n */\n var PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.center = void 0;\n _this.data = void 0;\n _this.maxLabelDistance = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animates the pies in.\n * @private\n */\n PieSeries.prototype.animate = function (init) {\n var series = this,\n points = series.points,\n startAngleRad = series.startAngleRad;\n if (!init) {\n points.forEach(function (point) {\n var graphic = point.graphic,\n args = point.shapeArgs;\n if (graphic && args) {\n // start values\n graphic.attr({\n // animate from inner radius (#779)\n r: pick(point.startR, (series.center && series.center[3] / 2)),\n start: startAngleRad,\n end: startAngleRad\n });\n // animate\n graphic.animate({\n r: args.r,\n start: args.start,\n end: args.end\n }, series.options.animation);\n }\n });\n }\n };\n /**\n * Called internally to draw auxiliary graph in pie-like series in\n * situtation when the default graph is not sufficient enough to present\n * the data well. Auxiliary graph is saved in the same object as\n * regular graph.\n * @private\n */\n PieSeries.prototype.drawEmpty = function () {\n var start = this.startAngleRad,\n end = this.endAngleRad,\n options = this.options;\n var centerX,\n centerY;\n // Draw auxiliary graph if there're no visible points.\n if (this.total === 0 && this.center) {\n centerX = this.center[0];\n centerY = this.center[1];\n if (!this.graph) {\n this.graph = this.chart.renderer\n .arc(centerX, centerY, this.center[1] / 2, 0, start, end)\n .addClass('highcharts-empty-series')\n .add(this.group);\n }\n this.graph.attr({\n d: Symbols.arc(centerX, centerY, this.center[2] / 2, 0, {\n start: start,\n end: end,\n innerR: this.center[3] / 2\n })\n });\n if (!this.chart.styledMode) {\n this.graph.attr({\n 'stroke-width': options.borderWidth,\n fill: options.fillColor || 'none',\n stroke: options.color || \"#cccccc\" /* Palette.neutralColor20 */\n });\n }\n }\n else if (this.graph) { // Destroy the graph object.\n this.graph = this.graph.destroy();\n }\n };\n /**\n * Slices in pie chart are initialized in DOM, but it's shapes and\n * animations are normally run in `drawPoints()`.\n * @private\n */\n PieSeries.prototype.drawPoints = function () {\n var renderer = this.chart.renderer;\n this.points.forEach(function (point) {\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (point.graphic && point.hasNewShapeType()) {\n point.graphic = point.graphic.destroy();\n }\n if (!point.graphic) {\n point.graphic = renderer[point.shapeType](point.shapeArgs)\n .add(point.series.group);\n point.delayedRendering = true;\n }\n });\n };\n /**\n * Extend the generatePoints method by adding total and percentage\n * properties to each point\n * @private\n */\n PieSeries.prototype.generatePoints = function () {\n _super.prototype.generatePoints.call(this);\n this.updateTotals();\n };\n /**\n * Utility for getting the x value from a given y, used for\n * anticollision logic in data labels. Added point for using specific\n * points' label distance.\n * @private\n */\n PieSeries.prototype.getX = function (y, left, point) {\n var center = this.center, \n // Variable pie has individual radius\n radius = this.radii ?\n this.radii[point.index] || 0 :\n center[2] / 2;\n var angle = Math.asin(clamp((y - center[1]) / (radius + point.labelDistance), -1, 1));\n var x = center[0] +\n (left ? -1 : 1) *\n (Math.cos(angle) * (radius + point.labelDistance)) +\n (point.labelDistance > 0 ?\n (left ? -1 : 1) * this.options.dataLabels.padding :\n 0);\n return x;\n };\n /**\n * Define hasData function for non-cartesian series. Returns true if the\n * series has points at all.\n * @private\n */\n PieSeries.prototype.hasData = function () {\n return !!this.processedXData.length; // != 0\n };\n /**\n * Draw the data points\n * @private\n */\n PieSeries.prototype.redrawPoints = function () {\n var series = this,\n chart = series.chart,\n renderer = chart.renderer,\n shadow = series.options.shadow;\n var groupTranslation,\n graphic,\n pointAttr,\n shapeArgs;\n this.drawEmpty();\n if (shadow && !series.shadowGroup && !chart.styledMode) {\n series.shadowGroup = renderer\n .g('shadow')\n .attr({ zIndex: -1 })\n .add(series.group);\n }\n // draw the slices\n series.points.forEach(function (point) {\n var animateTo = {};\n graphic = point.graphic;\n if (!point.isNull && graphic) {\n var shadowGroup = void 0;\n shapeArgs = point.shapeArgs;\n // If the point is sliced, use special translation, else use\n // plot area translation\n groupTranslation = point.getTranslate();\n if (!chart.styledMode) {\n // Put the shadow behind all points\n shadowGroup = point.shadowGroup;\n if (shadow && !shadowGroup) {\n shadowGroup = point.shadowGroup = renderer\n .g('shadow')\n .add(series.shadowGroup);\n }\n if (shadowGroup) {\n shadowGroup.attr(groupTranslation);\n }\n pointAttr = series.pointAttribs(point, (point.selected && 'select'));\n }\n // Draw the slice\n if (!point.delayedRendering) {\n graphic\n .setRadialReference(series.center);\n if (!chart.styledMode) {\n merge(true, animateTo, pointAttr);\n }\n merge(true, animateTo, shapeArgs, groupTranslation);\n graphic.animate(animateTo);\n }\n else {\n graphic\n .setRadialReference(series.center)\n .attr(shapeArgs)\n .attr(groupTranslation);\n if (!chart.styledMode) {\n graphic\n .attr(pointAttr)\n .attr({ 'stroke-linejoin': 'round' })\n .shadow(shadow, shadowGroup);\n }\n point.delayedRendering = false;\n }\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n graphic.addClass(point.getClassName(), true);\n }\n else if (graphic) {\n point.graphic = graphic.destroy();\n }\n });\n };\n /**\n * Utility for sorting data labels.\n * @private\n */\n PieSeries.prototype.sortByAngle = function (points, sign) {\n points.sort(function (a, b) {\n return ((typeof a.angle !== 'undefined') &&\n (b.angle - a.angle) * sign);\n });\n };\n /**\n * Do translation for pie slices\n * @private\n */\n PieSeries.prototype.translate = function (positions) {\n fireEvent(this, 'translate');\n this.generatePoints();\n var series = this,\n precision = 1000, // issue #172\n options = series.options,\n slicedOffset = options.slicedOffset,\n connectorOffset = slicedOffset + (options.borderWidth || 0),\n radians = getStartAndEndRadians(options.startAngle,\n options.endAngle),\n startAngleRad = series.startAngleRad = radians.start,\n endAngleRad = series.endAngleRad = radians.end,\n circ = endAngleRad - startAngleRad, // 2 * Math.PI,\n points = series.points,\n labelDistance = options.dataLabels.distance,\n ignoreHiddenPoint = options.ignoreHiddenPoint,\n len = points.length;\n var finalConnectorOffset,\n start,\n end,\n angle, \n // the x component of the radius vector for a given point\n radiusX,\n radiusY,\n i,\n point,\n cumulative = 0;\n // Get positions - either an integer or a percentage string must be\n // given. If positions are passed as a parameter, we're in a\n // recursive loop for adjusting space for data labels.\n if (!positions) {\n series.center = positions = series.getCenter();\n }\n // Calculate the geometry for each point\n for (i = 0; i < len; i++) {\n point = points[i];\n // set start and end angle\n start = startAngleRad + (cumulative * circ);\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n cumulative += point.percentage / 100;\n }\n end = startAngleRad + (cumulative * circ);\n // set the shape\n var shapeArgs = {\n x: positions[0],\n y: positions[1],\n r: positions[2] / 2,\n innerR: positions[3] / 2,\n start: Math.round(start * precision) / precision,\n end: Math.round(end * precision) / precision\n };\n point.shapeType = 'arc';\n point.shapeArgs = shapeArgs;\n // Used for distance calculation for specific point.\n point.labelDistance = pick((point.options.dataLabels &&\n point.options.dataLabels.distance), labelDistance);\n // Compute point.labelDistance if it's defined as percentage\n // of slice radius (#8854)\n point.labelDistance = relativeLength(point.labelDistance, shapeArgs.r);\n // Saved for later dataLabels distance calculation.\n series.maxLabelDistance = Math.max(series.maxLabelDistance || 0, point.labelDistance);\n // The angle must stay within -90 and 270 (#2645)\n angle = (end + start) / 2;\n if (angle > 1.5 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n else if (angle < -Math.PI / 2) {\n angle += 2 * Math.PI;\n }\n // Center for the sliced out slice\n point.slicedTranslation = {\n translateX: Math.round(Math.cos(angle) * slicedOffset),\n translateY: Math.round(Math.sin(angle) * slicedOffset)\n };\n // set the anchor point for tooltips\n radiusX = Math.cos(angle) * positions[2] / 2;\n radiusY = Math.sin(angle) * positions[2] / 2;\n point.tooltipPos = [\n positions[0] + radiusX * 0.7,\n positions[1] + radiusY * 0.7\n ];\n point.half = angle < -Math.PI / 2 || angle > Math.PI / 2 ?\n 1 :\n 0;\n point.angle = angle;\n // Set the anchor point for data labels. Use point.labelDistance\n // instead of labelDistance // #1174\n // finalConnectorOffset - not override connectorOffset value.\n finalConnectorOffset = Math.min(connectorOffset, point.labelDistance / 5); // #1678\n point.labelPosition = {\n natural: {\n // initial position of the data label - it's utilized for\n // finding the final position for the label\n x: positions[0] + radiusX + Math.cos(angle) *\n point.labelDistance,\n y: positions[1] + radiusY + Math.sin(angle) *\n point.labelDistance\n },\n 'final': {\n // used for generating connector path -\n // initialized later in drawDataLabels function\n // x: undefined,\n // y: undefined\n },\n // left - pie on the left side of the data label\n // right - pie on the right side of the data label\n // center - data label overlaps the pie\n alignment: point.labelDistance < 0 ?\n 'center' : point.half ? 'right' : 'left',\n connectorPosition: {\n breakAt: {\n x: positions[0] + radiusX + Math.cos(angle) *\n finalConnectorOffset,\n y: positions[1] + radiusY + Math.sin(angle) *\n finalConnectorOffset\n },\n touchingSliceAt: {\n x: positions[0] + radiusX,\n y: positions[1] + radiusY\n }\n }\n };\n }\n fireEvent(series, 'afterTranslate');\n };\n /**\n * Recompute total chart sum and update percentages of points.\n * @private\n */\n PieSeries.prototype.updateTotals = function () {\n var points = this.points,\n len = points.length,\n ignoreHiddenPoint = this.options.ignoreHiddenPoint;\n var i,\n point,\n total = 0;\n // Get the total sum\n for (i = 0; i < len; i++) {\n point = points[i];\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n total += point.y;\n }\n }\n this.total = total;\n // Set each point's properties\n for (i = 0; i < len; i++) {\n point = points[i];\n point.percentage =\n (total > 0 && (point.visible || !ignoreHiddenPoint)) ?\n point.y / total * 100 :\n 0;\n point.total = total;\n }\n };\n PieSeries.defaultOptions = merge(Series.defaultOptions, PieSeriesDefaults);\n return PieSeries;\n }(Series));\n extend(PieSeries.prototype, {\n axisTypes: [],\n directTouch: true,\n drawGraph: void 0,\n drawLegendSymbol: LegendSymbol.drawRectangle,\n drawTracker: ColumnSeries.prototype.drawTracker,\n getCenter: CU.getCenter,\n getSymbol: noop,\n isCartesian: false,\n noSharedTooltip: true,\n pointAttribs: ColumnSeries.prototype.pointAttribs,\n pointClass: PiePoint,\n requireSorting: false,\n searchPoint: noop,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('pie', PieSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeries;\n });\n _registerModule(_modules, 'Series/Pie/PieDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, H, R, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var noop = H.noop;\n var distribute = R.distribute;\n var Series = SeriesRegistry.series;\n var arrayMax = U.arrayMax,\n clamp = U.clamp,\n defined = U.defined,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n var dataLabelPositioners = {\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionY: function (point) {\n return point.top + point.distributeBox.pos;\n },\n // get the x - use the natural x position for labels near the\n // top and bottom, to prevent the top and botton slice\n // connectors from touching each other on either side\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionX: function (series, point, y, naturalY) {\n return series.getX(y < point.top + 2 || y > point.bottom - 2 ?\n naturalY :\n y, point.half, point);\n },\n // dataLabels.distance determines the x position of the label\n justify: function (point, radius, seriesCenter) {\n return seriesCenter[0] + (point.half ? -1 : 1) *\n (radius + point.labelDistance);\n },\n // Left edges of the left-half labels touch the left edge of the plot\n // area. Right edges of the right-half labels touch the right edge of\n // the plot area.\n alignToPlotEdges: function (dataLabel, half, plotWidth, plotLeft) {\n var dataLabelWidth = dataLabel.getBBox().width;\n return half ? dataLabelWidth + plotLeft :\n plotWidth - dataLabelWidth - plotLeft;\n },\n // Connectors of each side end in the same x position. Labels are\n // aligned to them. Left edge of the widest left-half label touches the\n // left edge of the plot area. Right edge of the widest right-half label\n // touches the right edge of the plot area.\n alignToConnectors: function (points, half, plotWidth, plotLeft) {\n var maxDataLabelWidth = 0,\n dataLabelWidth;\n // find widest data label\n points.forEach(function (point) {\n dataLabelWidth = point.dataLabel.getBBox().width;\n if (dataLabelWidth > maxDataLabelWidth) {\n maxDataLabelWidth = dataLabelWidth;\n }\n });\n return half ? maxDataLabelWidth + plotLeft :\n plotWidth - maxDataLabelWidth - plotLeft;\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function compose(PieSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(PieSeriesClass) === -1) {\n composedClasses.push(PieSeriesClass);\n var pieProto = PieSeriesClass.prototype;\n pieProto.dataLabelPositioners = dataLabelPositioners;\n pieProto.alignDataLabel = noop;\n pieProto.drawDataLabels = drawDataLabels;\n pieProto.placeDataLabels = placeDataLabels;\n pieProto.verifyDataLabelOverflow = verifyDataLabelOverflow;\n }\n }\n ColumnDataLabel.compose = compose;\n /**\n * Override the base drawDataLabels method by pie specific functionality\n * @private\n */\n function drawDataLabels() {\n var series = this,\n data = series.data,\n chart = series.chart,\n options = series.options.dataLabels || {},\n connectorPadding = options.connectorPadding,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotLeft = chart.plotLeft,\n maxWidth = Math.round(chart.chartWidth / 3),\n seriesCenter = series.center,\n radius = seriesCenter[2] / 2,\n centerY = seriesCenter[1],\n halves = [\n [],\n [] // left\n ],\n overflow = [0, 0, 0, 0], // top, right, bottom, left\n dataLabelPositioners = series.dataLabelPositioners;\n var point,\n connectorWidth,\n connector,\n dataLabel,\n dataLabelWidth, \n // labelPos,\n labelPosition,\n labelHeight, \n // divide the points into right and left halves for anti collision\n x,\n y,\n visibility,\n j,\n pointDataLabelsOptions;\n // get out if not enabled\n if (!series.visible ||\n (!options.enabled &&\n !series._hasPointLabels)) {\n return;\n }\n // Reset all labels that have been shortened\n data.forEach(function (point) {\n if (point.dataLabel && point.visible && point.dataLabel.shortened) {\n point.dataLabel\n .attr({\n width: 'auto'\n }).css({\n width: 'auto',\n textOverflow: 'clip'\n });\n point.dataLabel.shortened = false;\n }\n });\n // run parent method\n Series.prototype.drawDataLabels.apply(series);\n data.forEach(function (point) {\n if (point.dataLabel) {\n if (point.visible) { // #407, #2510\n // Arrange points for detection collision\n halves[point.half].push(point);\n // Reset positions (#4905)\n point.dataLabel._pos = null;\n // Avoid long labels squeezing the pie size too far down\n if (!defined(options.style.width) &&\n !defined(point.options.dataLabels &&\n point.options.dataLabels.style &&\n point.options.dataLabels.style.width)) {\n if (point.dataLabel.getBBox().width > maxWidth) {\n point.dataLabel.css({\n // Use a fraction of the maxWidth to avoid\n // wrapping close to the end of the string.\n width: Math.round(maxWidth * 0.7) + 'px'\n });\n point.dataLabel.shortened = true;\n }\n }\n }\n else {\n point.dataLabel = point.dataLabel.destroy();\n // Workaround to make pies destroy multiple datalabels\n // correctly. This logic needs rewriting to support multiple\n // datalabels fully.\n if (point.dataLabels && point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n }\n }\n });\n /* Loop over the points in each half, starting from the top and bottom\n * of the pie to detect overlapping labels.\n */\n halves.forEach(function (points, i) {\n var length = points.length,\n positions = [];\n var top,\n bottom,\n naturalY,\n sideOverflow,\n size,\n distributionLength;\n if (!length) {\n return;\n }\n // Sort by angle\n series.sortByAngle(points, i - 0.5);\n // Only do anti-collision when we have dataLabels outside the pie\n // and have connectors. (#856)\n if (series.maxLabelDistance > 0) {\n top = Math.max(0, centerY - radius - series.maxLabelDistance);\n bottom = Math.min(centerY + radius + series.maxLabelDistance, chart.plotHeight);\n points.forEach(function (point) {\n // check if specific points' label is outside the pie\n if (point.labelDistance > 0 && point.dataLabel) {\n // point.top depends on point.labelDistance value\n // Used for calculation of y value in getX method\n point.top = Math.max(0, centerY - radius - point.labelDistance);\n point.bottom = Math.min(centerY + radius + point.labelDistance, chart.plotHeight);\n size = point.dataLabel.getBBox().height || 21;\n // point.positionsIndex is needed for getting index of\n // parameter related to specific point inside positions\n // array - not every point is in positions array.\n point.distributeBox = {\n target: point.labelPosition.natural.y -\n point.top + size / 2,\n size: size,\n rank: point.y\n };\n positions.push(point.distributeBox);\n }\n });\n distributionLength = bottom + size - top;\n distribute(positions, distributionLength, distributionLength / 5);\n }\n // Now the used slots are sorted, fill them up sequentially\n for (j = 0; j < length; j++) {\n point = points[j];\n // labelPos = point.labelPos;\n labelPosition = point.labelPosition;\n dataLabel = point.dataLabel;\n visibility = point.visible === false ? 'hidden' : 'inherit';\n naturalY = labelPosition.natural.y;\n y = naturalY;\n if (positions && defined(point.distributeBox)) {\n if (typeof point.distributeBox.pos === 'undefined') {\n visibility = 'hidden';\n }\n else {\n labelHeight = point.distributeBox.size;\n // Find label's y position\n y = dataLabelPositioners\n .radialDistributionY(point);\n }\n }\n // It is needed to delete point.positionIndex for\n // dynamically added points etc.\n delete point.positionIndex; // @todo unused\n // Find label's x position\n // justify is undocumented in the API - preserve support for it\n if (options.justify) {\n x = dataLabelPositioners.justify(point, radius, seriesCenter);\n }\n else {\n switch (options.alignTo) {\n case 'connectors':\n x = dataLabelPositioners.alignToConnectors(points, i, plotWidth, plotLeft);\n break;\n case 'plotEdges':\n x = dataLabelPositioners.alignToPlotEdges(dataLabel, i, plotWidth, plotLeft);\n break;\n default:\n x = dataLabelPositioners.radialDistributionX(series, point, y, naturalY);\n }\n }\n // Record the placement and visibility\n dataLabel._attr = {\n visibility: visibility,\n align: labelPosition.alignment\n };\n pointDataLabelsOptions = point.options.dataLabels || {};\n dataLabel._pos = {\n x: (x +\n pick(pointDataLabelsOptions.x, options.x) + // (#12985)\n ({\n left: connectorPadding,\n right: -connectorPadding\n }[labelPosition.alignment] || 0)),\n // 10 is for the baseline (label vs text)\n y: (y +\n pick(pointDataLabelsOptions.y, options.y) - // (#12985)\n 10)\n };\n // labelPos.x = x;\n // labelPos.y = y;\n labelPosition.final.x = x;\n labelPosition.final.y = y;\n // Detect overflowing data labels\n if (pick(options.crop, true)) {\n dataLabelWidth = dataLabel.getBBox().width;\n sideOverflow = null;\n // Overflow left\n if (x - dataLabelWidth < connectorPadding &&\n i === 1 // left half\n ) {\n sideOverflow = Math.round(dataLabelWidth - x + connectorPadding);\n overflow[3] = Math.max(sideOverflow, overflow[3]);\n // Overflow right\n }\n else if (x + dataLabelWidth > plotWidth - connectorPadding &&\n i === 0 // right half\n ) {\n sideOverflow = Math.round(x + dataLabelWidth - plotWidth + connectorPadding);\n overflow[1] = Math.max(sideOverflow, overflow[1]);\n }\n // Overflow top\n if (y - labelHeight / 2 < 0) {\n overflow[0] = Math.max(Math.round(-y + labelHeight / 2), overflow[0]);\n // Overflow left\n }\n else if (y + labelHeight / 2 > plotHeight) {\n overflow[2] = Math.max(Math.round(y + labelHeight / 2 - plotHeight), overflow[2]);\n }\n dataLabel.sideOverflow = sideOverflow;\n }\n } // for each point\n }); // for each half\n // Do not apply the final placement and draw the connectors until we\n // have verified that labels are not spilling over.\n if (arrayMax(overflow) === 0 ||\n this.verifyDataLabelOverflow(overflow)) {\n // Place the labels in the final position\n this.placeDataLabels();\n this.points.forEach(function (point) {\n // #8864: every connector can have individual options\n pointDataLabelsOptions =\n merge(options, point.options.dataLabels);\n connectorWidth =\n pick(pointDataLabelsOptions.connectorWidth, 1);\n // Draw the connector\n if (connectorWidth) {\n var isNew = void 0;\n connector = point.connector;\n dataLabel = point.dataLabel;\n if (dataLabel &&\n dataLabel._pos &&\n point.visible &&\n point.labelDistance > 0) {\n visibility = dataLabel._attr.visibility;\n isNew = !connector;\n if (isNew) {\n point.connector = connector = chart.renderer\n .path()\n .addClass('highcharts-data-label-connector ' +\n ' highcharts-color-' + point.colorIndex +\n (point.className ?\n ' ' + point.className :\n ''))\n .add(series.dataLabelsGroup);\n if (!chart.styledMode) {\n connector.attr({\n 'stroke-width': connectorWidth,\n 'stroke': (pointDataLabelsOptions.connectorColor ||\n point.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n }\n connector[isNew ? 'attr' : 'animate']({\n d: point.getConnectorPath()\n });\n connector.attr('visibility', visibility);\n }\n else if (connector) {\n point.connector = connector.destroy();\n }\n }\n });\n }\n }\n /**\n * Perform the final placement of the data labels after we have verified\n * that they fall within the plot area.\n * @private\n */\n function placeDataLabels() {\n this.points.forEach(function (point) {\n var dataLabel = point.dataLabel,\n _pos;\n if (dataLabel && point.visible) {\n _pos = dataLabel._pos;\n if (_pos) {\n // Shorten data labels with ellipsis if they still overflow\n // after the pie has reached minSize (#223).\n if (dataLabel.sideOverflow) {\n dataLabel._attr.width =\n Math.max(dataLabel.getBBox().width -\n dataLabel.sideOverflow, 0);\n dataLabel.css({\n width: dataLabel._attr.width + 'px',\n textOverflow: ((this.options.dataLabels.style || {})\n .textOverflow ||\n 'ellipsis')\n });\n dataLabel.shortened = true;\n }\n dataLabel.attr(dataLabel._attr);\n dataLabel[dataLabel.moved ? 'animate' : 'attr'](_pos);\n dataLabel.moved = true;\n }\n else if (dataLabel) {\n dataLabel.attr({ y: -9999 });\n }\n }\n // Clear for update\n delete point.distributeBox;\n }, this);\n }\n /**\n * Verify whether the data labels are allowed to draw, or we should run more\n * translation and data label positioning to keep them inside the plot area.\n * Returns true when data labels are ready to draw.\n * @private\n */\n function verifyDataLabelOverflow(overflow) {\n var center = this.center,\n options = this.options,\n centerOption = options.center,\n minSize = options.minSize || 80,\n newSize = minSize, \n // If a size is set, return true and don't try to shrink the pie\n // to fit the labels.\n ret = options.size !== null;\n if (!ret) {\n // Handle horizontal size and center\n if (centerOption[0] !== null) { // Fixed center\n newSize = Math.max(center[2] -\n Math.max(overflow[1], overflow[3]), minSize);\n }\n else { // Auto center\n newSize = Math.max(\n // horizontal overflow\n center[2] - overflow[1] - overflow[3], minSize);\n // horizontal center\n center[0] += (overflow[3] - overflow[1]) / 2;\n }\n // Handle vertical size and center\n if (centerOption[1] !== null) { // Fixed center\n newSize = clamp(newSize, minSize, center[2] - Math.max(overflow[0], overflow[2]));\n }\n else { // Auto center\n newSize = clamp(newSize, minSize, \n // vertical overflow\n center[2] - overflow[0] - overflow[2]);\n // vertical center\n center[1] += (overflow[0] - overflow[2]) / 2;\n }\n // If the size must be decreased, we need to run translate and\n // drawDataLabels again\n if (newSize < center[2]) {\n center[2] = newSize;\n center[3] = Math.min(// #3632\n options.thickness ?\n Math.max(0, newSize - options.thickness * 2) :\n Math.max(0, relativeLength(options.innerSize || 0, newSize)), newSize); // #6647\n this.translate(center);\n if (this.drawDataLabels) {\n this.drawDataLabels();\n }\n // Else, return true to indicate that the pie and its labels is\n // within the plot area\n }\n else {\n ret = true;\n }\n }\n return ret;\n }\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Extensions/OverlappingDataLabels.js', [_modules['Core/Chart/Chart.js'], _modules['Core/Utilities.js']], function (Chart, U) {\n /* *\n *\n * Highcharts module to hide overlapping data labels.\n * This module is included in Highcharts.\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /**\n * Internal type\n * @private\n */\n /* eslint-disable no-invalid-this */\n // Collect potensial overlapping data labels. Stack labels probably don't need\n // to be considered because they are usually accompanied by data labels that lie\n // inside the columns.\n addEvent(Chart, 'render', function collectAndHide() {\n var chart = this,\n labels = [];\n // Consider external label collectors\n (this.labelCollectors || []).forEach(function (collector) {\n labels = labels.concat(collector());\n });\n (this.yAxis || []).forEach(function (yAxis) {\n if (yAxis.stacking &&\n yAxis.options.stackLabels &&\n !yAxis.options.stackLabels.allowOverlap) {\n objectEach(yAxis.stacking.stacks, function (stack) {\n objectEach(stack, function (stackItem) {\n if (stackItem.label) {\n labels.push(stackItem.label);\n }\n });\n });\n }\n });\n (this.series || []).forEach(function (series) {\n var dlOptions = series.options.dataLabels;\n if (series.visible &&\n !(dlOptions.enabled === false && !series._hasPointLabels)) { // #3866\n var push = function (points) {\n return points.forEach(function (point) {\n if (point.visible) {\n var dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n dataLabels.forEach(function (label) {\n var options = label.options;\n label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs && point.shapeArgs.height); // #4118\n if (!options.allowOverlap) {\n labels.push(label);\n }\n else { // #13449\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n hideOrShow(label, chart);\n }\n });\n }\n });\n };\n push(series.nodes || []);\n push(series.points);\n }\n });\n this.hideOverlappingLabels(labels);\n });\n /**\n * Hide overlapping labels. Labels are moved and faded in and out on zoom to\n * provide a smooth visual imression.\n *\n * @private\n * @function Highcharts.Chart#hideOverlappingLabels\n * @param {Array} labels\n * Rendered data labels\n * @requires modules/overlapping-datalabels\n */\n Chart.prototype.hideOverlappingLabels = function (labels) {\n var chart = this,\n len = labels.length,\n ren = chart.renderer,\n label,\n i,\n j,\n label1,\n label2,\n box1,\n box2,\n isLabelAffected = false,\n isIntersectRect = function (box1,\n box2) {\n return !(box2.x >= box1.x + box1.width ||\n box2.x + box2.width <= box1.x ||\n box2.y >= box1.y + box1.height ||\n box2.y + box2.height <= box1.y);\n }, \n // Get the box with its position inside the chart, as opposed to getBBox\n // that only reports the position relative to the parent.\n getAbsoluteBox = function (label) {\n var pos,\n parent,\n bBox, \n // Substract the padding if no background or border (#4333)\n padding = label.box ? 0 : (label.padding || 0),\n lineHeightCorrection = 0,\n xOffset = 0,\n boxWidth,\n alignValue;\n if (label &&\n (!label.alignAttr || label.placed)) {\n pos = label.alignAttr || {\n x: label.attr('x'),\n y: label.attr('y')\n };\n parent = label.parentGroup;\n // Get width and height if pure text nodes (stack labels)\n if (!label.width) {\n bBox = label.getBBox();\n label.width = bBox.width;\n label.height = bBox.height;\n // Labels positions are computed from top left corner, so\n // we need to substract the text height from text nodes too.\n lineHeightCorrection = ren\n .fontMetrics(null, label.element).h;\n }\n boxWidth = label.width - 2 * padding;\n alignValue = {\n left: '0',\n center: '0.5',\n right: '1'\n }[label.alignValue];\n if (alignValue) {\n xOffset = +alignValue * boxWidth;\n }\n else if (isNumber(label.x) &&\n Math.round(label.x) !== label.translateX) {\n xOffset = label.x - label.translateX;\n }\n return {\n x: pos.x + (parent.translateX || 0) + padding -\n (xOffset || 0),\n y: pos.y + (parent.translateY || 0) + padding -\n lineHeightCorrection,\n width: label.width - 2 * padding,\n height: label.height - 2 * padding\n };\n }\n };\n for (i = 0; i < len; i++) {\n label = labels[i];\n if (label) {\n // Mark with initial opacity\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n label.absoluteBox = getAbsoluteBox(label);\n }\n }\n // Prevent a situation in a gradually rising slope, that each label will\n // hide the previous one because the previous one always has lower rank.\n labels.sort(function (a, b) {\n return (b.labelrank || 0) - (a.labelrank || 0);\n });\n // Detect overlapping labels\n for (i = 0; i < len; i++) {\n label1 = labels[i];\n box1 = label1 && label1.absoluteBox;\n for (j = i + 1; j < len; ++j) {\n label2 = labels[j];\n box2 = label2 && label2.absoluteBox;\n if (box1 &&\n box2 &&\n label1 !== label2 && // #6465, polar chart with connectEnds\n label1.newOpacity !== 0 &&\n label2.newOpacity !== 0 &&\n // #15863 dataLabels are no longer hidden by translation\n label1.visibility !== 'hidden' &&\n label2.visibility !== 'hidden') {\n if (isIntersectRect(box1, box2)) {\n (label1.labelrank < label2.labelrank ? label1 : label2)\n .newOpacity = 0;\n }\n }\n }\n }\n // Hide or show\n labels.forEach(function (label) {\n if (hideOrShow(label, chart)) {\n isLabelAffected = true;\n }\n });\n if (isLabelAffected) {\n fireEvent(chart, 'afterHideAllOverlappingLabels');\n }\n };\n /**\n * Hide or show labels based on opacity.\n *\n * @private\n * @function hideOrShow\n * @param {Highcharts.SVGElement} label\n * The label.\n * @param {Highcharts.Chart} chart\n * The chart that contains the label.\n * @return {boolean}\n * Whether label is affected\n */\n function hideOrShow(label, chart) {\n var complete,\n newOpacity,\n isLabelAffected = false;\n if (label) {\n newOpacity = label.newOpacity;\n if (label.oldOpacity !== newOpacity) {\n // Make sure the label is completely hidden to avoid catching clicks\n // (#4362)\n if (label.alignAttr && label.placed) { // data labels\n label[newOpacity ? 'removeClass' : 'addClass']('highcharts-data-label-hidden');\n complete = function () {\n if (!chart.styledMode) {\n label.css({\n pointerEvents: newOpacity ? 'auto' : 'none'\n });\n }\n };\n isLabelAffected = true;\n // Animate or set the opacity\n label.alignAttr.opacity = newOpacity;\n label[label.isOld ? 'animate' : 'attr'](label.alignAttr, null, complete);\n fireEvent(chart, 'afterHideOverlappingLabel');\n }\n else { // other labels, tick labels\n label.attr({\n opacity: newOpacity\n });\n }\n }\n label.isOld = true;\n }\n return isLabelAffected;\n }\n\n });\n _registerModule(_modules, 'Core/Responsive.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var extend = U.extend,\n find = U.find,\n isArray = U.isArray,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Composition\n *\n * */\n var Responsive;\n (function (Responsive) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n extend(ChartClass.prototype, Additions.prototype);\n }\n return ChartClass;\n }\n Responsive.compose = compose;\n /* *\n *\n * Class\n *\n * */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current values for a given set of options. Used before we\n * update the chart with a new responsiveness rule.\n *\n * @todo Restore axis options (by id?). The matching of items in\n * collections bears resemblance to the oneToOne matching in\n * Chart.update. Probably we can refactor out that matching and reuse it\n * in both functions.\n *\n * @private\n * @function Highcharts.Chart#currentOptions\n */\n Additions.prototype.currentOptions = function (options) {\n var chart = this, ret = {};\n /**\n * Recurse over a set of options and its current values,\n * and store the current values in the ret object.\n */\n function getCurrent(options, curr, ret, depth) {\n var i;\n objectEach(options, function (val, key) {\n if (!depth &&\n chart.collectionsWithUpdate.indexOf(key) > -1 &&\n curr[key]) {\n val = splat(val);\n ret[key] = [];\n // Iterate over collections like series, xAxis or yAxis\n // and map the items by index.\n for (i = 0; i < Math.max(val.length, curr[key].length); i++) {\n // Item exists in current data (#6347)\n if (curr[key][i]) {\n // If the item is missing from the new data, we\n // need to save the whole config structure. Like\n // when responsively updating from a dual axis\n // layout to a single axis and back (#13544).\n if (val[i] === void 0) {\n ret[key][i] = curr[key][i];\n // Otherwise, proceed\n }\n else {\n ret[key][i] = {};\n getCurrent(val[i], curr[key][i], ret[key][i], depth + 1);\n }\n }\n }\n }\n else if (isObject(val)) {\n ret[key] = isArray(val) ? [] : {};\n getCurrent(val, curr[key] || {}, ret[key], depth + 1);\n }\n else if (typeof curr[key] === 'undefined') { // #10286\n ret[key] = null;\n }\n else {\n ret[key] = curr[key];\n }\n });\n }\n getCurrent(options, this.options, ret, 0);\n return ret;\n };\n /**\n * Handle a single responsiveness rule.\n *\n * @private\n * @function Highcharts.Chart#matchResponsiveRule\n * @param {Highcharts.ResponsiveRulesOptions} rule\n * @param {Array} matches\n */\n Additions.prototype.matchResponsiveRule = function (rule, matches) {\n var condition = rule.condition,\n fn = condition.callback || function () {\n return (this.chartWidth <= pick(condition.maxWidth,\n Number.MAX_VALUE) &&\n this.chartHeight <= pick(condition.maxHeight,\n Number.MAX_VALUE) &&\n this.chartWidth >= pick(condition.minWidth, 0) &&\n this.chartHeight >= pick(condition.minHeight, 0));\n };\n if (fn.call(this)) {\n matches.push(rule._id);\n }\n };\n /**\n * Update the chart based on the current chart/document size and options\n * for responsiveness.\n *\n * @private\n * @function Highcharts.Chart#setResponsive\n * @param {boolean} [redraw=true]\n * @param {boolean} [reset=false]\n * Reset by un-applying all rules. Chart.update resets all rules before\n * applying updated options.\n */\n Additions.prototype.setResponsive = function (redraw, reset) {\n var _this = this;\n var options = this.options.responsive,\n currentResponsive = this.currentResponsive;\n var ruleIds = [],\n undoOptions;\n if (!reset && options && options.rules) {\n options.rules.forEach(function (rule) {\n if (typeof rule._id === 'undefined') {\n rule._id = uniqueKey();\n }\n _this.matchResponsiveRule(rule, ruleIds /* , redraw */);\n }, this);\n }\n // Merge matching rules\n var mergedOptions = merge.apply(void 0,\n ruleIds\n .map(function (ruleId) { return find((options || {}).rules || [],\n function (rule) { return (rule._id === ruleId); }); })\n .map(function (rule) { return (rule && rule.chartOptions); }));\n mergedOptions.isResponsiveOptions = true;\n // Stringified key for the rules that currently apply.\n ruleIds = (ruleIds.toString() || void 0);\n var currentRuleIds = (currentResponsive && currentResponsive.ruleIds);\n // Changes in what rules apply\n if (ruleIds !== currentRuleIds) {\n // Undo previous rules. Before we apply a new set of rules, we\n // need to roll back completely to base options (#6291).\n if (currentResponsive) {\n this.update(currentResponsive.undoOptions, redraw, true);\n }\n if (ruleIds) {\n // Get undo-options for matching rules\n undoOptions = this.currentOptions(mergedOptions);\n undoOptions.isResponsiveOptions = true;\n this.currentResponsive = {\n ruleIds: ruleIds,\n mergedOptions: mergedOptions,\n undoOptions: undoOptions\n };\n this.update(mergedOptions, redraw, true);\n }\n else {\n this.currentResponsive = void 0;\n }\n }\n };\n return Additions;\n }());\n })(Responsive || (Responsive = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A callback function to gain complete control on when the responsive rule\n * applies.\n *\n * @callback Highcharts.ResponsiveCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * Chart context.\n *\n * @return {boolean}\n * Return `true` if it applies.\n */\n (''); // keeps doclets above in JS file\n /* *\n *\n * API Options\n *\n * */\n /**\n * Allows setting a set of rules to apply for different screen or chart\n * sizes. Each rule specifies additional chart options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @since 5.0.0\n * @apioption responsive\n */\n /**\n * A set of rules for responsive settings. The rules are executed from\n * the top down.\n *\n * @sample {highcharts} highcharts/responsive/axis/\n * Axis changes\n * @sample {highstock} highcharts/responsive/axis/\n * Axis changes\n * @sample {highmaps} highcharts/responsive/axis/\n * Axis changes\n *\n * @type {Array<*>}\n * @since 5.0.0\n * @apioption responsive.rules\n */\n /**\n * A full set of chart options to apply as overrides to the general\n * chart options. The chart options are applied when the given rule\n * is active.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](#xAxis), [yAxis](#yAxis) or [series](#series). For these\n * collections, an `id` option is used to map the new option set to\n * an existing object. If an existing object of the same id is not found,\n * the item of the same indexupdated. So for example, setting `chartOptions`\n * with two series items without an `id`, will cause the existing chart's\n * two series to be updated with respective options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @type {Highcharts.Options}\n * @since 5.0.0\n * @apioption responsive.rules.chartOptions\n */\n /**\n * Under which conditions the rule applies.\n *\n * @since 5.0.0\n * @apioption responsive.rules.condition\n */\n /**\n * A callback function to gain complete control on when the responsive\n * rule applies. Return `true` if it applies. This opens for checking\n * against other metrics than the chart size, for example the document\n * size or other elements.\n *\n * @type {Highcharts.ResponsiveCallbackFunction}\n * @since 5.0.0\n * @context Highcharts.Chart\n * @apioption responsive.rules.condition.callback\n */\n /**\n * The responsive rule applies if the chart height is less than this.\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxHeight\n */\n /**\n * The responsive rule applies if the chart width is less than this.\n *\n * @sample highcharts/responsive/axis/\n * Max width is 500\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxWidth\n */\n /**\n * The responsive rule applies if the chart height is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minHeight\n */\n /**\n * The responsive rule applies if the chart width is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minWidth\n */\n (''); // keeps doclets above in JS file\n\n return Responsive;\n });\n _registerModule(_modules, 'masters/highcharts.src.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js'], _modules['Core/Defaults.js'], _modules['Core/Animation/Fx.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Renderer/HTML/HTMLElement.js'], _modules['Core/Renderer/HTML/HTMLRenderer.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Axis/LogarithmicAxis.js'], _modules['Core/Axis/PlotLineOrBand/PlotLineOrBand.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Tooltip.js'], _modules['Core/Series/Point.js'], _modules['Core/Pointer.js'], _modules['Core/MSPointer.js'], _modules['Core/Legend/Legend.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Axis/Stacking/StackingAxis.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Series/Column/ColumnDataLabel.js'], _modules['Series/Pie/PieSeries.js'], _modules['Series/Pie/PieDataLabel.js'], _modules['Core/Series/DataLabel.js'], _modules['Core/Responsive.js'], _modules['Core/Color/Color.js'], _modules['Core/Time.js']], function (Highcharts, Utilities, Defaults, Fx, Animation, AST, FormatUtilities, RendererUtilities, SVGElement, SVGRenderer, HTMLElement, HTMLRenderer, Axis, DateTimeAxis, LogarithmicAxis, PlotLineOrBand, Tick, Tooltip, Point, Pointer, MSPointer, Legend, Chart, StackingAxis, StackItem, Series, SeriesRegistry, ColumnSeries, ColumnDataLabel, PieSeries, PieDataLabel, DataLabel, Responsive, Color, Time) {\n\n var G = Highcharts;\n // Animation\n G.animate = Animation.animate;\n G.animObject = Animation.animObject;\n G.getDeferredAnimation = Animation.getDeferredAnimation;\n G.setAnimation = Animation.setAnimation;\n G.stop = Animation.stop;\n G.timers = Fx.timers;\n // Classes\n G.AST = AST;\n G.Axis = Axis;\n G.Chart = Chart;\n G.chart = Chart.chart;\n G.Fx = Fx;\n G.Legend = Legend;\n G.PlotLineOrBand = PlotLineOrBand;\n G.Point = Point;\n G.Pointer = (MSPointer.isRequired() ? MSPointer : Pointer);\n G.Series = Series;\n G.StackItem = StackItem;\n G.SVGElement = SVGElement;\n G.SVGRenderer = SVGRenderer;\n G.Tick = Tick;\n G.Time = Time;\n G.Tooltip = Tooltip;\n // Color\n G.Color = Color;\n G.color = Color.parse;\n // Compositions\n HTMLRenderer.compose(SVGRenderer);\n HTMLElement.compose(SVGElement);\n // DefaultOptions\n G.defaultOptions = Defaults.defaultOptions;\n G.getOptions = Defaults.getOptions;\n G.time = Defaults.defaultTime;\n G.setOptions = Defaults.setOptions;\n // Format Utilities\n G.dateFormat = FormatUtilities.dateFormat;\n G.format = FormatUtilities.format;\n G.numberFormat = FormatUtilities.numberFormat;\n // Utilities\n G.addEvent = Utilities.addEvent;\n G.arrayMax = Utilities.arrayMax;\n G.arrayMin = Utilities.arrayMin;\n G.attr = Utilities.attr;\n G.clearTimeout = Utilities.clearTimeout;\n G.correctFloat = Utilities.correctFloat;\n G.createElement = Utilities.createElement;\n G.css = Utilities.css;\n G.defined = Utilities.defined;\n G.destroyObjectProperties = Utilities.destroyObjectProperties;\n G.discardElement = Utilities.discardElement;\n G.distribute = RendererUtilities.distribute;\n G.erase = Utilities.erase;\n G.error = Utilities.error;\n G.extend = Utilities.extend;\n G.extendClass = Utilities.extendClass;\n G.find = Utilities.find;\n G.fireEvent = Utilities.fireEvent;\n G.getMagnitude = Utilities.getMagnitude;\n G.getStyle = Utilities.getStyle;\n G.inArray = Utilities.inArray;\n G.isArray = Utilities.isArray;\n G.isClass = Utilities.isClass;\n G.isDOMElement = Utilities.isDOMElement;\n G.isFunction = Utilities.isFunction;\n G.isNumber = Utilities.isNumber;\n G.isObject = Utilities.isObject;\n G.isString = Utilities.isString;\n G.keys = Utilities.keys;\n G.merge = Utilities.merge;\n G.normalizeTickInterval = Utilities.normalizeTickInterval;\n G.objectEach = Utilities.objectEach;\n G.offset = Utilities.offset;\n G.pad = Utilities.pad;\n G.pick = Utilities.pick;\n G.pInt = Utilities.pInt;\n G.relativeLength = Utilities.relativeLength;\n G.removeEvent = Utilities.removeEvent;\n G.seriesType = SeriesRegistry.seriesType;\n G.splat = Utilities.splat;\n G.stableSort = Utilities.stableSort;\n G.syncTimeout = Utilities.syncTimeout;\n G.timeUnits = Utilities.timeUnits;\n G.uniqueKey = Utilities.uniqueKey;\n G.useSerialIds = Utilities.useSerialIds;\n G.wrap = Utilities.wrap;\n // Compositions\n ColumnDataLabel.compose(ColumnSeries);\n DataLabel.compose(Series);\n DateTimeAxis.compose(Axis);\n LogarithmicAxis.compose(Axis);\n PieDataLabel.compose(PieSeries);\n PlotLineOrBand.compose(Axis);\n Responsive.compose(Chart);\n StackingAxis.compose(Axis, Chart, Series);\n // Default Export\n\n return G;\n });\n _registerModule(_modules, 'Core/Axis/BrokenAxis.js', [_modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (StackItem, U) {\n /* *\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n find = U.find,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n /**\n * Axis with support of broken data rows.\n * @private\n */\n var BrokenAxis;\n (function (BrokenAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Adds support for broken axes.\n * @private\n */\n function compose(AxisClass, SeriesClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('brokenAxis');\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n addEvent(AxisClass, 'afterSetTickPositions', onAxisAfterSetTickPositions);\n addEvent(AxisClass, 'afterSetOptions', onAxisAfterSetOptions);\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto = SeriesClass.prototype;\n seriesProto.drawBreaks = seriesDrawBreaks;\n seriesProto.gappedPath = seriesGappedPath;\n addEvent(SeriesClass, 'afterGeneratePoints', onSeriesAfterGeneratePoints);\n addEvent(SeriesClass, 'afterRender', onSeriesAfterRender);\n }\n return AxisClass;\n }\n BrokenAxis.compose = compose;\n /**\n * @private\n */\n function onAxisAfterInit() {\n if (typeof this.brokenAxis !== 'undefined') {\n this.brokenAxis.setBreaks(this.options.breaks, false);\n }\n }\n /**\n * Force Axis to be not-ordinal when breaks are defined.\n * @private\n */\n function onAxisAfterSetOptions() {\n var axis = this;\n if (axis.brokenAxis && axis.brokenAxis.hasBreaks) {\n axis.options.ordinal = false;\n }\n }\n /**\n * @private\n */\n function onAxisAfterSetTickPositions() {\n var axis = this,\n brokenAxis = axis.brokenAxis;\n if (brokenAxis &&\n brokenAxis.hasBreaks) {\n var tickPositions = axis.tickPositions,\n info = axis.tickPositions.info,\n newPositions = [];\n for (var i = 0; i < tickPositions.length; i++) {\n if (!brokenAxis.isInAnyBreak(tickPositions[i])) {\n newPositions.push(tickPositions[i]);\n }\n }\n axis.tickPositions = newPositions;\n axis.tickPositions.info = info;\n }\n }\n /**\n * @private\n */\n function onAxisInit() {\n var axis = this;\n if (!axis.brokenAxis) {\n axis.brokenAxis = new Additions(axis);\n }\n }\n /**\n * @private\n */\n function onSeriesAfterGeneratePoints() {\n var _a = this,\n isDirty = _a.isDirty,\n connectNulls = _a.options.connectNulls,\n points = _a.points,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis;\n // Set, or reset visibility of the points. Axis.setBreaks marks\n // the series as isDirty\n if (isDirty) {\n var i = points.length;\n while (i--) {\n var point = points[i];\n // Respect nulls inside the break (#4275)\n var nullGap = point.y === null && connectNulls === false;\n var isPointInBreak = (!nullGap && ((xAxis &&\n xAxis.brokenAxis &&\n xAxis.brokenAxis.isInAnyBreak(point.x,\n true)) || (yAxis &&\n yAxis.brokenAxis &&\n yAxis.brokenAxis.isInAnyBreak(point.y,\n true))));\n // Set point.visible if in any break.\n // If not in break, reset visible to original value.\n point.visible = isPointInBreak ?\n false :\n point.options.visible !== false;\n }\n }\n }\n /**\n * @private\n */\n function onSeriesAfterRender() {\n this.drawBreaks(this.xAxis, ['x']);\n this.drawBreaks(this.yAxis, pick(this.pointArrayMap, ['y']));\n }\n /**\n * @private\n */\n function seriesDrawBreaks(axis, keys) {\n var series = this,\n points = series.points;\n var breaks,\n threshold,\n eventName,\n y;\n if (axis && // #5950\n axis.brokenAxis &&\n axis.brokenAxis.hasBreaks) {\n var brokenAxis_1 = axis.brokenAxis;\n keys.forEach(function (key) {\n breaks = brokenAxis_1 && brokenAxis_1.breakArray || [];\n threshold = axis.isXAxis ?\n axis.min :\n pick(series.options.threshold, axis.min);\n points.forEach(function (point) {\n y = pick(point['stack' + key.toUpperCase()], point[key]);\n breaks.forEach(function (brk) {\n if (isNumber(threshold) && isNumber(y)) {\n eventName = false;\n if ((threshold < brk.from && y > brk.to) ||\n (threshold > brk.from && y < brk.from)) {\n eventName = 'pointBreak';\n }\n else if ((threshold < brk.from &&\n y > brk.from &&\n y < brk.to) || (threshold > brk.from &&\n y > brk.to &&\n y < brk.from)) {\n eventName = 'pointInBreak';\n }\n if (eventName) {\n fireEvent(axis, eventName, { point: point, brk: brk });\n }\n }\n });\n });\n });\n }\n }\n /**\n * Extend getGraphPath by identifying gaps in the data so that we\n * can draw a gap in the line or area. This was moved from ordinal\n * axis module to broken axis module as of #5045.\n *\n * @private\n * @function Highcharts.Series#gappedPath\n *\n * @return {Highcharts.SVGPathArray}\n * Gapped path\n */\n function seriesGappedPath() {\n var currentDataGrouping = this.currentDataGrouping,\n groupingSize = currentDataGrouping && currentDataGrouping.gapSize,\n points = this.points.slice(),\n yAxis = this.yAxis;\n var gapSize = this.options.gapSize,\n i = points.length - 1,\n stack;\n /**\n * Defines when to display a gap in the graph, together with the\n * [gapUnit](plotOptions.series.gapUnit) option.\n *\n * In case when `dataGrouping` is enabled, points can be grouped\n * into a larger time span. This can make the grouped points to\n * have a greater distance than the absolute value of `gapSize`\n * property, which will result in disappearing graph completely.\n * To prevent this situation the mentioned distance between\n * grouped points is used instead of previously defined\n * `gapSize`.\n *\n * In practice, this option is most often used to visualize gaps\n * in time series. In a stock chart, intraday data is available\n * for daytime hours, while gaps will appear in nights and\n * weekends.\n *\n * @see [gapUnit](plotOptions.series.gapUnit)\n * @see [xAxis.breaks](#xAxis.breaks)\n *\n * @sample {highstock} stock/plotoptions/series-gapsize/\n * Setting the gap size to 2 introduces gaps for weekends in\n * daily datasets.\n *\n * @type {number}\n * @default 0\n * @product highstock\n * @requires modules/broken-axis\n * @apioption plotOptions.series.gapSize\n */\n /**\n * Together with [gapSize](plotOptions.series.gapSize), this\n * option defines where to draw gaps in the graph.\n *\n * When the `gapUnit` is `\"relative\"` (default), a gap size of 5\n * means that if the distance between two points is greater than\n * 5 times that of the two closest points, the graph will be\n * broken.\n *\n * When the `gapUnit` is `\"value\"`, the gap is based on absolute\n * axis values, which on a datetime axis is milliseconds. This\n * also applies to the navigator series that inherits gap\n * options from the base series.\n *\n * @see [gapSize](plotOptions.series.gapSize)\n *\n * @type {string}\n * @default relative\n * @since 5.0.13\n * @product highstock\n * @validvalue [\"relative\", \"value\"]\n * @requires modules/broken-axis\n * @apioption plotOptions.series.gapUnit\n */\n if (gapSize && i > 0) { // #5008\n // Gap unit is relative\n if (this.options.gapUnit !== 'value') {\n gapSize *= this.basePointRange;\n }\n // Setting a new gapSize in case dataGrouping is enabled\n // (#7686)\n if (groupingSize &&\n groupingSize > gapSize &&\n // Except when DG is forced (e.g. from other series)\n // and has lower granularity than actual points (#11351)\n groupingSize >= this.basePointRange) {\n gapSize = groupingSize;\n }\n // extension for ordinal breaks\n var current = void 0,\n next = void 0;\n while (i--) {\n // Reassign next if it is not visible\n if (!(next && next.visible !== false)) {\n next = points[i + 1];\n }\n current = points[i];\n // Skip iteration if one of the points is not visible\n if (next.visible === false || current.visible === false) {\n continue;\n }\n if (next.x - current.x > gapSize) {\n var xRange = (current.x + next.x) / 2;\n points.splice(// insert after this one\n i + 1, 0, {\n isNull: true,\n x: xRange\n });\n // For stacked chart generate empty stack items, #6546\n if (yAxis.stacking && this.options.stacking) {\n stack = yAxis.stacking.stacks[this.stackKey][xRange] = new StackItem(yAxis, yAxis.options.stackLabels, false, xRange, this.stack);\n stack.total = 0;\n }\n }\n // Assign current to next for the upcoming iteration\n next = current;\n }\n }\n // Call base method\n return this.getGraphPath(points);\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Provides support for broken axes.\n * @private\n * @class\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.hasBreaks = false;\n this.axis = axis;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n Additions.isInBreak = function (brk, val) {\n var repeat = brk.repeat || Infinity,\n from = brk.from,\n length = brk.to - brk.from,\n test = (val >= from ?\n (val - from) % repeat :\n repeat - ((from - val) % repeat));\n var ret;\n if (!brk.inclusive) {\n ret = test < length && test !== 0;\n }\n else {\n ret = test <= length;\n }\n return ret;\n };\n /**\n * @private\n */\n Additions.lin2Val = function (val) {\n var axis = this;\n var brokenAxis = axis.brokenAxis;\n var breakArray = brokenAxis && brokenAxis.breakArray;\n if (!breakArray || !isNumber(val)) {\n return val;\n }\n var nval = val,\n brk,\n i;\n for (i = 0; i < breakArray.length; i++) {\n brk = breakArray[i];\n if (brk.from >= nval) {\n break;\n }\n else if (brk.to < nval) {\n nval += brk.len;\n }\n else if (Additions.isInBreak(brk, nval)) {\n nval += brk.len;\n }\n }\n return nval;\n };\n /**\n * @private\n */\n Additions.val2Lin = function (val) {\n var axis = this;\n var brokenAxis = axis.brokenAxis;\n var breakArray = brokenAxis && brokenAxis.breakArray;\n if (!breakArray || !isNumber(val)) {\n return val;\n }\n var nval = val,\n brk,\n i;\n for (i = 0; i < breakArray.length; i++) {\n brk = breakArray[i];\n if (brk.to <= val) {\n nval -= brk.len;\n }\n else if (brk.from >= val) {\n break;\n }\n else if (Additions.isInBreak(brk, val)) {\n nval -= (val - brk.from);\n break;\n }\n }\n return nval;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Returns the first break found where the x is larger then break.from\n * and smaller then break.to.\n *\n * @param {number} x\n * The number which should be within a break.\n *\n * @param {Array} breaks\n * The array of breaks to search within.\n *\n * @return {Highcharts.XAxisBreaksOptions|undefined}\n * Returns the first break found that matches, returns false if no break\n * is found.\n */\n Additions.prototype.findBreakAt = function (x, breaks) {\n return find(breaks, function (b) {\n return b.from < x && x < b.to;\n });\n };\n /**\n * @private\n */\n Additions.prototype.isInAnyBreak = function (val, testKeep) {\n var brokenAxis = this,\n axis = brokenAxis.axis,\n breaks = axis.options.breaks || [];\n var i = breaks.length,\n inbrk,\n keep,\n ret;\n if (i && isNumber(val)) {\n while (i--) {\n if (Additions.isInBreak(breaks[i], val)) {\n inbrk = true;\n if (!keep) {\n keep = pick(breaks[i].showPoints, !axis.isXAxis);\n }\n }\n }\n if (inbrk && testKeep) {\n ret = inbrk && !keep;\n }\n else {\n ret = inbrk;\n }\n }\n return ret;\n };\n /**\n * Dynamically set or unset breaks in an axis. This function in lighter\n * than usin Axis.update, and it also preserves animation.\n *\n * @private\n * @function Highcharts.Axis#setBreaks\n *\n * @param {Array} [breaks]\n * The breaks to add. When `undefined` it removes existing breaks.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart immediately.\n */\n Additions.prototype.setBreaks = function (breaks, redraw) {\n var brokenAxis = this;\n var axis = brokenAxis.axis;\n var hasBreaks = (isArray(breaks) && !!breaks.length);\n axis.isDirty = brokenAxis.hasBreaks !== hasBreaks;\n brokenAxis.hasBreaks = hasBreaks;\n axis.options.breaks = axis.userOptions.breaks = breaks;\n axis.forceRedraw = true; // Force recalculation in setScale\n // Recalculate series related to the axis.\n axis.series.forEach(function (series) {\n series.isDirty = true;\n });\n if (!hasBreaks && axis.val2lin === Additions.val2Lin) {\n // Revert to prototype functions\n delete axis.val2lin;\n delete axis.lin2val;\n }\n if (hasBreaks) {\n axis.userOptions.ordinal = false;\n axis.lin2val = Additions.lin2Val;\n axis.val2lin = Additions.val2Lin;\n axis.setExtremes = function (newMin, newMax, redraw, animation, eventArguments) {\n // If trying to set extremes inside a break, extend min to\n // after, and max to before the break ( #3857 )\n if (brokenAxis.hasBreaks) {\n var breaks_1 = (this.options.breaks || []);\n var axisBreak = void 0;\n while ((axisBreak = brokenAxis.findBreakAt(newMin, breaks_1))) {\n newMin = axisBreak.to;\n }\n while ((axisBreak = brokenAxis.findBreakAt(newMax, breaks_1))) {\n newMax = axisBreak.from;\n }\n // If both min and max is within the same break.\n if (newMax < newMin) {\n newMax = newMin;\n }\n }\n axis.constructor.prototype.setExtremes.call(this, newMin, newMax, redraw, animation, eventArguments);\n };\n axis.setAxisTranslation = function () {\n axis.constructor.prototype.setAxisTranslation.call(this);\n brokenAxis.unitLength = void 0;\n if (brokenAxis.hasBreaks) {\n var breaks_2 = axis.options.breaks || [], \n // Temporary one:\n breakArrayT_1 = [],\n breakArray_1 = [],\n pointRangePadding = pick(axis.pointRangePadding, 0);\n var length_1 = 0,\n inBrk_1,\n repeat_1,\n min_1 = axis.userMin || axis.min,\n max_1 = axis.userMax || axis.max,\n start_1,\n i_1;\n // Min & max check (#4247)\n breaks_2.forEach(function (brk) {\n repeat_1 = brk.repeat || Infinity;\n if (isNumber(min_1) && isNumber(max_1)) {\n if (Additions.isInBreak(brk, min_1)) {\n min_1 += ((brk.to % repeat_1) -\n (min_1 % repeat_1));\n }\n if (Additions.isInBreak(brk, max_1)) {\n max_1 -= ((max_1 % repeat_1) -\n (brk.from % repeat_1));\n }\n }\n });\n // Construct an array holding all breaks in the axis\n breaks_2.forEach(function (brk) {\n start_1 = brk.from;\n repeat_1 = brk.repeat || Infinity;\n if (isNumber(min_1) && isNumber(max_1)) {\n while (start_1 - repeat_1 > min_1) {\n start_1 -= repeat_1;\n }\n while (start_1 < min_1) {\n start_1 += repeat_1;\n }\n for (i_1 = start_1; i_1 < max_1; i_1 += repeat_1) {\n breakArrayT_1.push({\n value: i_1,\n move: 'in'\n });\n breakArrayT_1.push({\n value: i_1 + brk.to - brk.from,\n move: 'out',\n size: brk.breakSize\n });\n }\n }\n });\n breakArrayT_1.sort(function (a, b) {\n return ((a.value === b.value) ?\n ((a.move === 'in' ? 0 : 1) -\n (b.move === 'in' ? 0 : 1)) :\n a.value - b.value);\n });\n // Simplify the breaks\n inBrk_1 = 0;\n start_1 = min_1;\n breakArrayT_1.forEach(function (brk) {\n inBrk_1 += (brk.move === 'in' ? 1 : -1);\n if (inBrk_1 === 1 && brk.move === 'in') {\n start_1 = brk.value;\n }\n if (inBrk_1 === 0 && isNumber(start_1)) {\n breakArray_1.push({\n from: start_1,\n to: brk.value,\n len: brk.value - start_1 - (brk.size || 0)\n });\n length_1 += (brk.value -\n start_1 -\n (brk.size || 0));\n }\n });\n brokenAxis.breakArray = breakArray_1;\n // Used with staticScale, and below the actual axis\n // length, when breaks are substracted.\n if (isNumber(min_1) &&\n isNumber(max_1) &&\n isNumber(axis.min)) {\n brokenAxis.unitLength = max_1 - min_1 - length_1 +\n pointRangePadding;\n fireEvent(axis, 'afterBreaks');\n if (axis.staticScale) {\n axis.transA = axis.staticScale;\n }\n else if (brokenAxis.unitLength) {\n axis.transA *=\n (max_1 - axis.min + pointRangePadding) /\n brokenAxis.unitLength;\n }\n if (pointRangePadding) {\n axis.minPixelPadding =\n axis.transA * (axis.minPointOffset || 0);\n }\n axis.min = min_1;\n axis.max = max_1;\n }\n }\n };\n }\n if (pick(redraw, true)) {\n axis.chart.redraw();\n }\n };\n return Additions;\n }());\n BrokenAxis.Additions = Additions;\n })(BrokenAxis || (BrokenAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return BrokenAxis;\n });\n _registerModule(_modules, 'masters/modules/broken-axis.src.js', [_modules['Core/Globals.js'], _modules['Core/Axis/BrokenAxis.js']], function (Highcharts, BrokenAxis) {\n\n var G = Highcharts;\n // Compositions\n BrokenAxis.compose(G.Axis, G.Series);\n\n });\n _registerModule(_modules, 'Extensions/DataGrouping/ApproximationRegistry.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n /**\n * Define the available approximation types. The data grouping\n * approximations takes an array or numbers as the first parameter. In case\n * of ohlc, four arrays are sent in as four parameters. Each array consists\n * only of numbers. In case null values belong to the group, the property\n * .hasNulls will be set to true on the array.\n *\n * @product highstock\n *\n * @private\n */\n var ApproximationRegistry = {\n // approximations added programmatically\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ApproximationRegistry;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/ApproximationDefaults.js', [_modules['Extensions/DataGrouping/ApproximationRegistry.js'], _modules['Core/Utilities.js']], function (ApproximationRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n correctFloat = U.correctFloat,\n extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function average(arr) {\n var len = arr.length;\n var ret = sum(arr);\n // If we have a number, return it divided by the length. If not,\n // return null or undefined based on what the sum method finds.\n if (isNumber(ret) && len) {\n ret = correctFloat(ret / len);\n }\n return ret;\n }\n /**\n * The same as average, but for series with multiple values, like area ranges.\n * @private\n */\n function averages() {\n var ret = [];\n [].forEach.call(arguments, function (arr) {\n ret.push(average(arr));\n });\n // Return undefined when first elem. is undefined and let\n // sum method handle null (#7377)\n return typeof ret[0] === 'undefined' ? void 0 : ret;\n }\n /**\n * @private\n */\n function close(arr) {\n return arr.length ?\n arr[arr.length - 1] :\n (arr.hasNulls ? null : void 0);\n }\n /**\n * @private\n */\n function high(arr) {\n return arr.length ?\n arrayMax(arr) :\n (arr.hasNulls ? null : void 0);\n }\n /**\n * HLC, OHLC and range are special cases where a multidimensional array is input\n * and an array is output.\n * @private\n */\n function hlc(high, low, close) {\n high = ApproximationRegistry.high(high);\n low = ApproximationRegistry.low(low);\n close = ApproximationRegistry.close(close);\n if (isNumber(high) ||\n isNumber(low) ||\n isNumber(close)) {\n return [high, low, close];\n }\n }\n /**\n * @private\n */\n function low(arr) {\n return arr.length ?\n arrayMin(arr) :\n (arr.hasNulls ? null : void 0);\n }\n /**\n * @private\n */\n function ohlc(open, high, low, close) {\n open = ApproximationRegistry.open(open);\n high = ApproximationRegistry.high(high);\n low = ApproximationRegistry.low(low);\n close = ApproximationRegistry.close(close);\n if (isNumber(open) ||\n isNumber(high) ||\n isNumber(low) ||\n isNumber(close)) {\n return [open, high, low, close];\n }\n }\n /**\n * @private\n */\n function open(arr) {\n return arr.length ? arr[0] : (arr.hasNulls ? null : void 0);\n }\n /**\n * @private\n */\n function range(low, high) {\n low = ApproximationRegistry.low(low);\n high = ApproximationRegistry.high(high);\n if (isNumber(low) || isNumber(high)) {\n return [low, high];\n }\n if (low === null && high === null) {\n return null;\n }\n // else, return is undefined\n }\n /**\n * @private\n */\n function sum(arr) {\n var len = arr.length,\n ret;\n // 1. it consists of nulls exclusive\n if (!len && arr.hasNulls) {\n ret = null;\n // 2. it has a length and real values\n }\n else if (len) {\n ret = 0;\n while (len--) {\n ret += arr[len];\n }\n }\n // 3. it has zero length, so just return undefined\n // => doNothing()\n return ret;\n }\n /* *\n *\n * Default Export\n *\n * */\n var ApproximationDefaults = {\n average: average,\n averages: averages,\n close: close,\n high: high,\n hlc: hlc,\n low: low,\n ohlc: ohlc,\n open: open,\n range: range,\n sum: sum\n };\n extend(ApproximationRegistry, ApproximationDefaults);\n\n return ApproximationDefaults;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/DataGroupingDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n /**\n * Common options\n * @private\n */\n var common = {\n // enabled: null, // (true for stock charts, false for basic),\n // forced: undefined,\n groupPixelWidth: 2,\n // the first one is the point or start value, the second is the start\n // value if we're dealing with range, the third one is the end value if\n // dealing with a range\n dateTimeLabelFormats: {\n millisecond: [\n '%A, %b %e, %H:%M:%S.%L',\n '%A, %b %e, %H:%M:%S.%L',\n '-%H:%M:%S.%L'\n ],\n second: [\n '%A, %b %e, %H:%M:%S',\n '%A, %b %e, %H:%M:%S',\n '-%H:%M:%S'\n ],\n minute: [\n '%A, %b %e, %H:%M',\n '%A, %b %e, %H:%M',\n '-%H:%M'\n ],\n hour: [\n '%A, %b %e, %H:%M',\n '%A, %b %e, %H:%M',\n '-%H:%M'\n ],\n day: [\n '%A, %b %e, %Y',\n '%A, %b %e',\n '-%A, %b %e, %Y'\n ],\n week: [\n 'Week from %A, %b %e, %Y',\n '%A, %b %e',\n '-%A, %b %e, %Y'\n ],\n month: [\n '%B %Y',\n '%B',\n '-%B %Y'\n ],\n year: [\n '%Y',\n '%Y',\n '-%Y'\n ]\n }\n // smoothed = false, // enable this for navigator series only\n };\n /**\n * Extends common options\n * @private\n */\n var seriesSpecific = {\n line: {},\n spline: {},\n area: {},\n areaspline: {},\n arearange: {},\n column: {\n groupPixelWidth: 10\n },\n columnrange: {\n groupPixelWidth: 10\n },\n candlestick: {\n groupPixelWidth: 10\n },\n ohlc: {\n groupPixelWidth: 5\n },\n hlc: {\n groupPixelWidth: 5\n // Move to HeikinAshiSeries.ts aftre refactoring data grouping.\n },\n heikinashi: {\n groupPixelWidth: 10\n }\n };\n /**\n * Units are defined in a separate array to allow complete overriding in\n * case of a user option.\n * @private\n */\n var units = [\n [\n 'millisecond',\n [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n ],\n [\n 'second',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'minute',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'hour',\n [1, 2, 3, 4, 6, 8, 12]\n ],\n [\n 'day',\n [1]\n ],\n [\n 'week',\n [1]\n ],\n [\n 'month',\n [1, 3, 6]\n ],\n [\n 'year',\n null\n ]\n ];\n /* *\n *\n * Default Export\n *\n * */\n var DataGroupingDefaults = {\n common: common,\n seriesSpecific: seriesSpecific,\n units: units\n };\n\n return DataGroupingDefaults;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/DataGroupingAxisComposition.js', [_modules['Extensions/DataGrouping/DataGroupingDefaults.js'], _modules['Core/Utilities.js']], function (DataGroupingDefaults, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var composedMembers = [];\n /* *\n *\n * Variables\n *\n * */\n var AxisConstructor;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Check the groupPixelWidth and apply the grouping if needed.\n * Fired only after processing the data.\n *\n * @product highstock\n *\n * @function Highcharts.Axis#applyGrouping\n */\n function applyGrouping(e) {\n var axis = this,\n series = axis.series;\n // Reset the groupPixelWidth for all series, #17141.\n series.forEach(function (series) {\n series.groupPixelWidth = void 0; // #2110\n });\n series.forEach(function (series) {\n series.groupPixelWidth = (axis.getGroupPixelWidth &&\n axis.getGroupPixelWidth());\n if (series.groupPixelWidth) {\n series.hasProcessed = true; // #2692\n }\n // Fire independing on series.groupPixelWidth to always set a proper\n // dataGrouping state, (#16238)\n series.applyGrouping(!!e.hasExtremesChanged);\n });\n }\n /**\n * @private\n */\n function compose(AxisClass) {\n AxisConstructor = AxisClass;\n if (composedMembers.indexOf(AxisClass) === -1) {\n composedMembers.push(AxisClass);\n addEvent(AxisClass, 'afterSetScale', onAfterSetScale);\n // When all series are processed, calculate the group pixel width and\n // then if this value is different than zero apply groupings.\n addEvent(AxisClass, 'postProcessData', applyGrouping);\n extend(AxisClass.prototype, {\n applyGrouping: applyGrouping,\n getGroupPixelWidth: getGroupPixelWidth,\n setDataGrouping: setDataGrouping\n });\n }\n }\n /**\n * Get the data grouping pixel width based on the greatest defined individual\n * width of the axis' series, and if whether one of the axes need grouping.\n * @private\n */\n function getGroupPixelWidth() {\n var series = this.series;\n var i = series.length,\n groupPixelWidth = 0,\n doGrouping = false,\n dataLength,\n dgOptions;\n // If one of the series needs grouping, apply it to all (#1634)\n while (i--) {\n dgOptions = series[i].options.dataGrouping;\n if (dgOptions) { // #2692\n // If multiple series are compared on the same x axis, give them the\n // same group pixel width (#334)\n groupPixelWidth = Math.max(groupPixelWidth, \n // Fallback to commonOptions (#9693)\n pick(dgOptions.groupPixelWidth, DataGroupingDefaults.common.groupPixelWidth));\n dataLength = (series[i].processedXData || series[i].data).length;\n // Execute grouping if the amount of points is greater than the\n // limit defined in groupPixelWidth\n if (series[i].groupPixelWidth ||\n (dataLength >\n (this.chart.plotSizeX / groupPixelWidth)) ||\n (dataLength && dgOptions.forced)) {\n doGrouping = true;\n }\n }\n }\n return doGrouping ? groupPixelWidth : 0;\n }\n /**\n * When resetting the scale reset the hasProccessed flag to avoid taking\n * previous data grouping of neighbour series into accound when determining\n * group pixel width (#2692).\n * @private\n */\n function onAfterSetScale() {\n this.series.forEach(function (series) {\n series.hasProcessed = false;\n });\n }\n /**\n * Highcharts Stock only. Force data grouping on all the axis' series.\n *\n * @product highstock\n *\n * @function Highcharts.Axis#setDataGrouping\n *\n * @param {boolean|Highcharts.DataGroupingOptionsObject} [dataGrouping]\n * A `dataGrouping` configuration. Use `false` to disable data grouping\n * dynamically.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for a later call to\n * {@link Chart#redraw}.\n */\n function setDataGrouping(dataGrouping, redraw) {\n var axis = this;\n var i;\n redraw = pick(redraw, true);\n if (!dataGrouping) {\n dataGrouping = {\n forced: false,\n units: null\n };\n }\n // Axis is instantiated, update all series\n if (this instanceof AxisConstructor) {\n i = this.series.length;\n while (i--) {\n this.series[i].update({\n dataGrouping: dataGrouping\n }, false);\n }\n // Axis not yet instanciated, alter series options\n }\n else {\n this.chart.options.series.forEach(function (seriesOptions) {\n // Merging dataGrouping options with already defined options #16759\n seriesOptions.dataGrouping = typeof dataGrouping === 'boolean' ?\n dataGrouping :\n merge(dataGrouping, seriesOptions.dataGrouping);\n });\n }\n // Clear ordinal slope, so we won't accidentaly use the old one (#7827)\n if (axis.ordinal) {\n axis.ordinal.slope = void 0;\n }\n if (redraw) {\n this.chart.redraw();\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var DataGroupingAxisComposition = {\n compose: compose\n };\n\n return DataGroupingAxisComposition;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/DataGroupingSeriesComposition.js', [_modules['Extensions/DataGrouping/ApproximationRegistry.js'], _modules['Extensions/DataGrouping/DataGroupingDefaults.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Defaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ApproximationRegistry, DataGroupingDefaults, DateTimeAxis, D, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var seriesProto = SeriesRegistry.series.prototype;\n var addEvent = U.addEvent,\n defined = U.defined,\n error = U.error,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var baseGeneratePoints = seriesProto.generatePoints;\n var composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function adjustExtremes(xAxis, groupedXData) {\n // Make sure the X axis extends to show the first group (#2533)\n // But only for visible series (#5493, #6393)\n if (defined(groupedXData[0]) &&\n isNumber(xAxis.min) &&\n isNumber(xAxis.dataMin) &&\n groupedXData[0] < xAxis.min) {\n if ((!defined(xAxis.options.min) &&\n xAxis.min <= xAxis.dataMin) ||\n xAxis.min === xAxis.dataMin) {\n xAxis.min = Math.min(groupedXData[0], xAxis.min);\n }\n xAxis.dataMin = Math.min(groupedXData[0], xAxis.dataMin);\n }\n // When the last anchor set, change the extremes that\n // the last point is visible (#12455).\n if (defined(groupedXData[groupedXData.length - 1]) &&\n isNumber(xAxis.max) &&\n isNumber(xAxis.dataMax) &&\n groupedXData[groupedXData.length - 1] > xAxis.max) {\n if ((!defined(xAxis.options.max) &&\n isNumber(xAxis.dataMax) &&\n xAxis.max >= xAxis.dataMax) || xAxis.max === xAxis.dataMax) {\n xAxis.max = Math.max(groupedXData[groupedXData.length - 1], xAxis.max);\n }\n xAxis.dataMax = Math.max(groupedXData[groupedXData.length - 1], xAxis.dataMax);\n }\n }\n /**\n * @private\n */\n function anchorPoints(series, groupedXData, xMax) {\n var options = series.options,\n dataGroupingOptions = options.dataGrouping,\n totalRange = (series.currentDataGrouping && series.currentDataGrouping.gapSize);\n var i;\n // DataGrouping x-coordinates.\n if (dataGroupingOptions && series.xData && totalRange && series.groupMap) {\n var groupedDataLength = groupedXData.length - 1,\n anchor = dataGroupingOptions.anchor,\n firstAnchor = pick(dataGroupingOptions.firstAnchor,\n anchor),\n lastAnchor = pick(dataGroupingOptions.lastAnchor,\n anchor);\n // Anchor points that are not extremes.\n if (anchor && anchor !== 'start') {\n var shiftInterval = (totalRange *\n { middle: 0.5,\n end: 1 }[anchor]);\n i = groupedXData.length - 1;\n while (i-- && i > 0) {\n groupedXData[i] += shiftInterval;\n }\n }\n // Change the first point position, but only when it is\n // the first point in the data set not in the current zoom.\n if (firstAnchor &&\n firstAnchor !== 'start' &&\n series.xData[0] >= groupedXData[0]) {\n var groupStart = series.groupMap[0].start,\n groupLength = series.groupMap[0].length;\n var firstGroupstEnd = void 0;\n if (isNumber(groupStart) && isNumber(groupLength)) {\n firstGroupstEnd = groupStart + (groupLength - 1);\n }\n groupedXData[0] = {\n middle: groupedXData[0] + 0.5 * totalRange,\n end: groupedXData[0] + totalRange,\n firstPoint: series.xData[0],\n lastPoint: firstGroupstEnd && series.xData[firstGroupstEnd]\n }[firstAnchor];\n }\n // Change the last point position but only when it is\n // the last point in the data set not in the current zoom.\n if (lastAnchor &&\n lastAnchor !== 'start' &&\n totalRange &&\n groupedXData[groupedDataLength] >= xMax - totalRange) {\n var lastGroupStart = series.groupMap[series.groupMap.length - 1].start;\n groupedXData[groupedDataLength] = {\n middle: groupedXData[groupedDataLength] + 0.5 * totalRange,\n end: groupedXData[groupedDataLength] + totalRange,\n firstPoint: lastGroupStart && series.xData[lastGroupStart],\n lastPoint: series.xData[series.xData.length - 1]\n }[lastAnchor];\n }\n }\n }\n /**\n * For the processed data, calculate the grouped data if needed.\n *\n * @private\n * @function Highcharts.Series#applyGrouping\n */\n function applyGrouping(hasExtremesChanged) {\n var series = this,\n chart = series.chart,\n options = series.options,\n dataGroupingOptions = options.dataGrouping,\n groupingEnabled = series.allowDG !== false && dataGroupingOptions &&\n pick(dataGroupingOptions.enabled,\n chart.options.isStock),\n visible = (series.visible || !chart.options.chart.ignoreHiddenSeries),\n lastDataGrouping = this.currentDataGrouping;\n var currentDataGrouping,\n croppedData,\n revertRequireSorting = false;\n // Data needs to be sorted for dataGrouping\n if (groupingEnabled && !series.requireSorting) {\n series.requireSorting = revertRequireSorting = true;\n }\n // Skip if skipDataGrouping method returns false or if grouping is disabled\n // (in that order).\n var skip = skipDataGrouping(series,\n hasExtremesChanged) === false || !groupingEnabled;\n // Revert original requireSorting value if changed\n if (revertRequireSorting) {\n series.requireSorting = false;\n }\n if (!skip) {\n series.destroyGroupedData();\n var processedXData = dataGroupingOptions.groupAll ?\n series.xData :\n series.processedXData,\n processedYData = dataGroupingOptions.groupAll ?\n series.yData :\n series.processedYData,\n plotSizeX = chart.plotSizeX,\n xAxis = series.xAxis,\n ordinal = xAxis.options.ordinal,\n groupPixelWidth = series.groupPixelWidth;\n var i = void 0,\n hasGroupedData = void 0;\n // Execute grouping if the amount of points is greater than the limit\n // defined in groupPixelWidth\n if (groupPixelWidth &&\n processedXData &&\n processedXData.length &&\n plotSizeX) {\n hasGroupedData = true;\n // Force recreation of point instances in series.translate, #5699\n series.isDirty = true;\n series.points = null; // #6709\n var extremes = xAxis.getExtremes(),\n xMin = extremes.min,\n xMax = extremes.max,\n groupIntervalFactor = (ordinal &&\n xAxis.ordinal &&\n xAxis.ordinal.getGroupIntervalFactor(xMin,\n xMax,\n series)) || 1,\n interval = (groupPixelWidth * (xMax - xMin) / plotSizeX) *\n groupIntervalFactor,\n groupPositions = xAxis.getTimeTicks(DateTimeAxis.Additions.prototype.normalizeTimeTickInterval(interval,\n dataGroupingOptions.units ||\n DataGroupingDefaults.units), \n // Processed data may extend beyond axis (#4907)\n Math.min(xMin,\n processedXData[0]),\n Math.max(xMax,\n processedXData[processedXData.length - 1]),\n xAxis.options.startOfWeek,\n processedXData,\n series.closestPointRange),\n groupedData = seriesProto.groupData.apply(series,\n [\n processedXData,\n processedYData,\n groupPositions,\n dataGroupingOptions.approximation\n ]);\n var groupedXData = groupedData.groupedXData,\n groupedYData = groupedData.groupedYData,\n gapSize = 0;\n // The smoothed option is deprecated, instead, there is a fallback\n // to the new anchoring mechanism. #12455.\n if (dataGroupingOptions &&\n dataGroupingOptions.smoothed &&\n groupedXData.length) {\n dataGroupingOptions.firstAnchor = 'firstPoint';\n dataGroupingOptions.anchor = 'middle';\n dataGroupingOptions.lastAnchor = 'lastPoint';\n error(32, false, chart, {\n 'dataGrouping.smoothed': 'use dataGrouping.anchor'\n });\n }\n anchorPoints(series, groupedXData, xMax);\n // Record what data grouping values were used\n for (i = 1; i < groupPositions.length; i++) {\n // The grouped gapSize needs to be the largest distance between\n // the group to capture varying group sizes like months or DST\n // crossing (#10000). Also check that the gap is not at the\n // start of a segment.\n if (!groupPositions.info.segmentStarts ||\n groupPositions.info.segmentStarts.indexOf(i) === -1) {\n gapSize = Math.max(groupPositions[i] - groupPositions[i - 1], gapSize);\n }\n }\n currentDataGrouping = groupPositions.info;\n currentDataGrouping.gapSize = gapSize;\n series.closestPointRange = groupPositions.info.totalRange;\n series.groupMap = groupedData.groupMap;\n if (visible) {\n adjustExtremes(xAxis, groupedXData);\n }\n // We calculated all group positions but we should render\n // only the ones within the visible range\n if (dataGroupingOptions.groupAll) {\n // Keep the reference to all grouped points\n // for further calculation (eg. heikinashi).\n series.allGroupedData = groupedYData;\n croppedData = series.cropData(groupedXData, groupedYData, xAxis.min, xAxis.max, 1 // Ordinal xAxis will remove left-most points otherwise\n );\n groupedXData = croppedData.xData;\n groupedYData = croppedData.yData;\n series.cropStart = croppedData.start; // #15005\n }\n // Set series props\n series.processedXData = groupedXData;\n series.processedYData = groupedYData;\n }\n else {\n series.groupMap = null;\n }\n series.hasGroupedData = hasGroupedData;\n series.currentDataGrouping = currentDataGrouping;\n series.preventGraphAnimation =\n (lastDataGrouping && lastDataGrouping.totalRange) !==\n (currentDataGrouping && currentDataGrouping.totalRange);\n }\n }\n /**\n * @private\n */\n function compose(SeriesClass) {\n var PointClass = SeriesClass.prototype.pointClass;\n if (composedMembers.indexOf(PointClass) === -1) {\n composedMembers.push(PointClass);\n // Override point prototype to throw a warning when trying to update\n // grouped points.\n addEvent(PointClass, 'update', function () {\n if (this.dataGroup) {\n error(24, false, this.series.chart);\n return false;\n }\n });\n }\n if (composedMembers.indexOf(SeriesClass) === -1) {\n composedMembers.push(SeriesClass);\n addEvent(SeriesClass, 'afterSetOptions', onAfterSetOptions);\n addEvent(SeriesClass, 'destroy', destroyGroupedData);\n extend(SeriesClass.prototype, {\n applyGrouping: applyGrouping,\n destroyGroupedData: destroyGroupedData,\n generatePoints: generatePoints,\n getDGApproximation: getDGApproximation,\n groupData: groupData\n });\n }\n }\n /**\n * Destroy the grouped data points. #622, #740\n * @private\n */\n function destroyGroupedData() {\n // Clear previous groups\n if (this.groupedData) {\n this.groupedData.forEach(function (point, i) {\n if (point) {\n this.groupedData[i] = point.destroy ?\n point.destroy() : null;\n }\n }, this);\n // Clears all:\n // - `this.groupedData`\n // - `this.points`\n // - `preserve` object in series.update()\n this.groupedData.length = 0;\n }\n }\n /**\n * Override the generatePoints method by adding a reference to grouped data\n * @private\n */\n function generatePoints() {\n baseGeneratePoints.apply(this);\n // Record grouped data in order to let it be destroyed the next time\n // processData runs\n this.destroyGroupedData(); // #622\n this.groupedData = this.hasGroupedData ? this.points : null;\n }\n /**\n * Set default approximations to the prototypes if present. Properties are\n * inherited down. Can be overridden for individual series types.\n * @private\n */\n function getDGApproximation() {\n if (this.is('arearange')) {\n return 'range';\n }\n if (this.is('ohlc')) {\n return 'ohlc';\n }\n if (this.is('hlc')) {\n return 'hlc';\n }\n if (this.is('column')) {\n return 'sum';\n }\n return 'average';\n }\n /**\n * Highcharts Stock only. Takes parallel arrays of x and y data and groups the\n * data into intervals defined by groupPositions, a collection of starting x\n * values for each group.\n *\n * @product highstock\n *\n * @function Highcharts.Series#groupData\n * @param {Array} xData\n * Parallel array of x data.\n * @param {Array<(number|null|undefined)>|Array>} yData\n * Parallel array of y data.\n * @param {Array} groupPositions\n * Group positions.\n * @param {string|Function} [approximation]\n * Approximation to use.\n * @return {Highcharts.DataGroupingResultObject}\n * Mapped groups.\n */\n function groupData(xData, yData, groupPositions, approximation) {\n var series = this,\n data = series.data,\n dataOptions = series.options && series.options.data,\n groupedXData = [],\n groupedYData = [],\n groupMap = [],\n dataLength = xData.length, \n // when grouping the fake extended axis for panning,\n // we don't need to consider y\n handleYData = !!yData,\n values = [],\n pointArrayMap = series.pointArrayMap,\n pointArrayMapLength = pointArrayMap && pointArrayMap.length,\n extendedPointArrayMap = ['x'].concat(pointArrayMap || ['y']),\n groupAll = (this.options.dataGrouping &&\n this.options.dataGrouping.groupAll);\n var pointX,\n pointY,\n groupedY,\n pos = 0,\n start = 0;\n var approximationFn = (typeof approximation === 'function' ?\n approximation :\n approximation && ApproximationRegistry[approximation] ?\n ApproximationRegistry[approximation] :\n ApproximationRegistry[(series.getDGApproximation && series.getDGApproximation() ||\n 'average')]);\n // Calculate values array size from pointArrayMap length\n if (pointArrayMapLength) {\n var len = pointArrayMap.length;\n while (len--) {\n values.push([]);\n }\n }\n else {\n values.push([]);\n }\n var valuesLen = pointArrayMapLength || 1;\n for (var i = 0; i <= dataLength; i++) {\n // Start with the first point within the X axis range (#2696)\n if (xData[i] < groupPositions[0]) {\n continue; // with next point\n }\n // when a new group is entered, summarize and initialize\n // the previous group\n while ((typeof groupPositions[pos + 1] !== 'undefined' &&\n xData[i] >= groupPositions[pos + 1]) ||\n i === dataLength) { // get the last group\n // get group x and y\n pointX = groupPositions[pos];\n series.dataGroupInfo = {\n start: groupAll ? start : (series.cropStart + start),\n length: values[0].length\n };\n groupedY = approximationFn.apply(series, values);\n // By default, let options of the first grouped point be passed over\n // to the grouped point. This allows preserving properties like\n // `name` and `color` or custom properties. Implementers can\n // override this from the approximation function, where they can\n // write custom options to `this.dataGroupInfo.options`.\n if (series.pointClass && !defined(series.dataGroupInfo.options)) {\n // Convert numbers and arrays into objects\n series.dataGroupInfo.options = merge(series.pointClass.prototype\n .optionsToObject.call({ series: series }, series.options.data[series.cropStart + start]));\n // Make sure the raw data (x, y, open, high etc) is not copied\n // over and overwriting approximated data.\n extendedPointArrayMap.forEach(function (key) {\n delete series.dataGroupInfo.options[key];\n });\n }\n // push the grouped data\n if (typeof groupedY !== 'undefined') {\n groupedXData.push(pointX);\n groupedYData.push(groupedY);\n groupMap.push(series.dataGroupInfo);\n }\n // reset the aggregate arrays\n start = i;\n for (var j = 0; j < valuesLen; j++) {\n values[j].length = 0; // faster than values[j] = []\n values[j].hasNulls = false;\n }\n // Advance on the group positions\n pos += 1;\n // don't loop beyond the last group\n if (i === dataLength) {\n break;\n }\n }\n // break out\n if (i === dataLength) {\n break;\n }\n // for each raw data point, push it to an array that contains all values\n // for this specific group\n if (pointArrayMap) {\n var index = (series.options.dataGrouping &&\n series.options.dataGrouping.groupAll ?\n i : series.cropStart + i),\n point = (data && data[index]) ||\n series.pointClass.prototype.applyOptions.apply({\n series: series\n },\n [dataOptions[index]]);\n var val = void 0;\n for (var j = 0; j < pointArrayMapLength; j++) {\n val = point[pointArrayMap[j]];\n if (isNumber(val)) {\n values[j].push(val);\n }\n else if (val === null) {\n values[j].hasNulls = true;\n }\n }\n }\n else {\n pointY = handleYData ? yData[i] : null;\n if (isNumber(pointY)) {\n values[0].push(pointY);\n }\n else if (pointY === null) {\n values[0].hasNulls = true;\n }\n }\n }\n return {\n groupedXData: groupedXData,\n groupedYData: groupedYData,\n groupMap: groupMap\n };\n }\n /**\n * Handle default options for data grouping. This must be set at runtime because\n * some series types are defined after this.\n * @private\n */\n function onAfterSetOptions(e) {\n var options = e.options,\n type = this.type,\n plotOptions = this.chart.options.plotOptions, \n // External series, for example technical indicators should also inherit\n // commonOptions which are not available outside this module\n baseOptions = (this.useCommonDataGrouping &&\n DataGroupingDefaults.common),\n seriesSpecific = DataGroupingDefaults.seriesSpecific;\n var defaultOptions = D.defaultOptions.plotOptions[type].dataGrouping;\n if (plotOptions && (seriesSpecific[type] || baseOptions)) { // #1284\n var rangeSelector = this.chart.rangeSelector;\n if (!defaultOptions) {\n defaultOptions = merge(DataGroupingDefaults.common, seriesSpecific[type]);\n }\n options.dataGrouping = merge(baseOptions, defaultOptions, plotOptions.series && plotOptions.series.dataGrouping, // #1228\n // Set by the StockChart constructor:\n plotOptions[type].dataGrouping, this.userOptions.dataGrouping, !options.isInternal &&\n rangeSelector &&\n isNumber(rangeSelector.selected) &&\n rangeSelector.buttonOptions[rangeSelector.selected].dataGrouping);\n }\n }\n /**\n * @private\n */\n function skipDataGrouping(series, force) {\n return !(series.isCartesian &&\n !series.isDirty &&\n !series.xAxis.isDirty &&\n !series.yAxis.isDirty &&\n !force);\n }\n /* *\n *\n * Default Export\n *\n * */\n var DataGroupingSeriesComposition = {\n compose: compose,\n groupData: groupData\n };\n\n return DataGroupingSeriesComposition;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/DataGrouping.js', [_modules['Extensions/DataGrouping/DataGroupingAxisComposition.js'], _modules['Extensions/DataGrouping/DataGroupingDefaults.js'], _modules['Extensions/DataGrouping/DataGroupingSeriesComposition.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (DataGroupingAxisComposition, DataGroupingDefaults, DataGroupingSeriesComposition, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = F.format;\n var addEvent = U.addEvent,\n extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Constants\n *\n * */\n var composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(AxisClass, SeriesClass, TooltipClass) {\n DataGroupingAxisComposition.compose(AxisClass);\n DataGroupingSeriesComposition.compose(SeriesClass);\n if (composedMembers.indexOf(TooltipClass) === -1) {\n composedMembers.push(TooltipClass);\n addEvent(TooltipClass, 'headerFormatter', onTooltipHeaderFormatter);\n }\n }\n /**\n * Extend the original method, make the tooltip's header reflect the grouped\n * range.\n * @private\n */\n function onTooltipHeaderFormatter(e) {\n var chart = this.chart,\n time = chart.time,\n labelConfig = e.labelConfig,\n series = labelConfig.series,\n options = series.options,\n tooltipOptions = series.tooltipOptions,\n dataGroupingOptions = options.dataGrouping,\n xAxis = series.xAxis;\n var xDateFormat = tooltipOptions.xDateFormat,\n xDateFormatEnd,\n currentDataGrouping,\n dateTimeLabelFormats,\n labelFormats,\n formattedKey,\n formatString = tooltipOptions[e.isFooter ? 'footerFormat' : 'headerFormat'];\n // apply only to grouped series\n if (xAxis &&\n xAxis.options.type === 'datetime' &&\n dataGroupingOptions &&\n isNumber(labelConfig.key)) {\n // set variables\n currentDataGrouping = series.currentDataGrouping;\n dateTimeLabelFormats = dataGroupingOptions.dateTimeLabelFormats ||\n // Fallback to commonOptions (#9693)\n DataGroupingDefaults.common.dateTimeLabelFormats;\n // if we have grouped data, use the grouping information to get the\n // right format\n if (currentDataGrouping) {\n labelFormats =\n dateTimeLabelFormats[currentDataGrouping.unitName];\n if (currentDataGrouping.count === 1) {\n xDateFormat = labelFormats[0];\n }\n else {\n xDateFormat = labelFormats[1];\n xDateFormatEnd = labelFormats[2];\n }\n // if not grouped, and we don't have set the xDateFormat option, get the\n // best fit, so if the least distance between points is one minute, show\n // it, but if the least distance is one day, skip hours and minutes etc.\n }\n else if (!xDateFormat && dateTimeLabelFormats && xAxis.dateTime) {\n xDateFormat = xAxis.dateTime.getXDateFormat(labelConfig.x, tooltipOptions.dateTimeLabelFormats);\n }\n // now format the key\n formattedKey = time.dateFormat(xDateFormat, labelConfig.key);\n if (xDateFormatEnd) {\n formattedKey += time.dateFormat(xDateFormatEnd, labelConfig.key + currentDataGrouping.totalRange - 1);\n }\n // Replace default header style with class name\n if (series.chart.styledMode) {\n formatString = this.styledModeFormat(formatString);\n }\n // return the replaced format\n e.text = format(formatString, {\n point: extend(labelConfig.point, { key: formattedKey }),\n series: series\n }, chart);\n e.preventDefault();\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var DataGroupingComposition = {\n compose: compose,\n groupData: DataGroupingSeriesComposition.groupData\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"average\"|\"averages\"|\"open\"|\"high\"|\"low\"|\"close\"|\"sum\"} Highcharts.DataGroupingApproximationValue\n */\n /**\n * The position of the point inside the group.\n *\n * @typedef {\"start\"|\"middle\"|\"end\"} Highcharts.DataGroupingAnchor\n */\n /**\n * The position of the first or last point in the series inside the group.\n *\n * @typedef {\"start\"|\"middle\"|\"end\"|\"firstPoint\"|\"lastPoint\"} Highcharts.DataGroupingAnchorExtremes\n */\n /**\n * Highcharts Stock only.\n *\n * @product highstock\n * @interface Highcharts.DataGroupingInfoObject\n */ /**\n * @name Highcharts.DataGroupingInfoObject#length\n * @type {number}\n */ /**\n * @name Highcharts.DataGroupingInfoObject#options\n * @type {Highcharts.SeriesOptionsType|undefined}\n */ /**\n * @name Highcharts.DataGroupingInfoObject#start\n * @type {number}\n */\n /**\n * Highcharts Stock only.\n *\n * @product highstock\n * @interface Highcharts.DataGroupingResultObject\n */ /**\n * @name Highcharts.DataGroupingResultObject#groupedXData\n * @type {Array}\n */ /**\n * @name Highcharts.DataGroupingResultObject#groupedYData\n * @type {Array<(number|null|undefined)>|Array>}\n */ /**\n * @name Highcharts.DataGroupingResultObject#groupMap\n * @type {Array}\n */\n /**\n * Highcharts Stock only. If a point object is created by data\n * grouping, it doesn't reflect actual points in the raw\n * data. In this case, the `dataGroup` property holds\n * information that points back to the raw data.\n *\n * - `dataGroup.start` is the index of the first raw data\n * point in the group.\n *\n * - `dataGroup.length` is the amount of points in the\n * group.\n *\n * @sample stock/members/point-datagroup\n * Click to inspect raw data points\n *\n * @product highstock\n *\n * @name Highcharts.Point#dataGroup\n * @type {Highcharts.DataGroupingInfoObject|undefined}\n */\n (''); // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * Data grouping is the concept of sampling the data values into larger\n * blocks in order to ease readability and increase performance of the\n * JavaScript charts. Highcharts Stock by default applies data grouping when\n * the points become closer than a certain pixel value, determined by\n * the `groupPixelWidth` option.\n *\n * If data grouping is applied, the grouping information of grouped\n * points can be read from the [Point.dataGroup](\n * /class-reference/Highcharts.Point#dataGroup). If point options other than\n * the data itself are set, for example `name` or `color` or custom properties,\n * the grouping logic doesn't know how to group it. In this case the options of\n * the first point instance are copied over to the group point. This can be\n * altered through a custom `approximation` callback function.\n *\n * @declare Highcharts.DataGroupingOptionsObject\n * @product highstock\n * @requires product:highstock\n * @requires module:modules/datagrouping\n * @apioption plotOptions.series.dataGrouping\n */\n /**\n * Specifies how the points should be located on the X axis inside the group.\n * Points that are extremes can be set separately. Available options:\n *\n * - `start` places the point at the beginning of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)\n *\n * - `middle` places the point in the middle of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)\n *\n * - `end` places the point at the end of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-anchor\n * Changing the point x-coordinate inside the group.\n *\n * @see [dataGrouping.firstAnchor](#plotOptions.series.dataGrouping.firstAnchor)\n * @see [dataGrouping.lastAnchor](#plotOptions.series.dataGrouping.lastAnchor)\n *\n * @type {Highcharts.DataGroupingAnchor}\n * @since 9.1.0\n * @default start\n * @apioption plotOptions.series.dataGrouping.anchor\n */\n /**\n * The method of approximation inside a group. When for example 30 days\n * are grouped into one month, this determines what value should represent\n * the group. Possible values are \"average\", \"averages\", \"open\", \"high\",\n * \"low\", \"close\" and \"sum\". For OHLC and candlestick series the approximation\n * is \"ohlc\" by default, which finds the open, high, low and close values\n * within all the grouped data. For ranges, the approximation is \"range\",\n * which finds the low and high values. For multi-dimensional data,\n * like ranges and OHLC, \"averages\" will compute the average for each\n * dimension.\n *\n * Custom aggregate methods can be added by assigning a callback function\n * as the approximation. This function takes a numeric array as the\n * argument and should return a single numeric value or `null`. Note\n * that the numeric array will never contain null values, only true\n * numbers. Instead, if null values are present in the raw data, the\n * numeric array will have an `.hasNulls` property set to `true`. For\n * single-value data sets the data is available in the first argument\n * of the callback function. For OHLC data sets, all the open values\n * are in the first argument, all high values in the second etc.\n *\n * Since v4.2.7, grouping meta data is available in the approximation\n * callback from `this.dataGroupInfo`. It can be used to extract information\n * from the raw data.\n *\n * Defaults to `average` for line-type series, `sum` for columns, `range`\n * for range series, `hlc` for HLC, and `ohlc` for OHLC and candlestick.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-approximation\n * Approximation callback with custom data\n * @sample {highstock} stock/plotoptions/series-datagrouping-simple-approximation\n * Simple approximation demo\n *\n * @type {Highcharts.DataGroupingApproximationValue|Function}\n * @apioption plotOptions.series.dataGrouping.approximation\n */\n /**\n * Datetime formats for the header of the tooltip in a stock chart.\n * The format can vary within a chart depending on the currently selected\n * time range and the current data grouping.\n *\n * The default formats are:\n * ```js\n * {\n * millisecond: [\n * '%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'\n * ],\n * second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],\n * minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],\n * hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],\n * day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],\n * week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],\n * month: ['%B %Y', '%B', '-%B %Y'],\n * year: ['%Y', '%Y', '-%Y']\n * }\n * ```\n *\n * For each of these array definitions, the first item is the format\n * used when the active time span is one unit. For instance, if the\n * current data applies to one week, the first item of the week array\n * is used. The second and third items are used when the active time\n * span is more than two units. For instance, if the current data applies\n * to two weeks, the second and third item of the week array are used,\n * and applied to the start and end date of the time span.\n *\n * @type {Object}\n * @apioption plotOptions.series.dataGrouping.dateTimeLabelFormats\n */\n /**\n * Enable or disable data grouping.\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.dataGrouping.enabled\n */\n /**\n * Specifies how the first grouped point is positioned on the xAxis.\n * If firstAnchor and/or lastAnchor are defined, then those options take\n * precedence over anchor for the first and/or last grouped points.\n * Available options:\n *\n * -`start` places the point at the beginning of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)\n *\n * -`middle` places the point in the middle of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)\n *\n * -`end` places the point at the end of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)\n *\n * -`firstPoint` the first point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:13)\n *\n * -`lastPoint` the last point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:59)\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-first-anchor\n * Applying first and last anchor.\n *\n * @see [dataGrouping.anchor](#plotOptions.series.dataGrouping.anchor)\n *\n * @type {Highcharts.DataGroupingAnchorExtremes}\n * @since 9.1.0\n * @default start\n * @apioption plotOptions.series.dataGrouping.firstAnchor\n */\n /**\n * When data grouping is forced, it runs no matter how small the intervals\n * are. This can be handy for example when the sum should be calculated\n * for values appearing at random times within each hour.\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataGrouping.forced\n */\n /**\n * The approximate pixel width of each group. If for example a series\n * with 30 points is displayed over a 600 pixel wide plot area, no grouping\n * is performed. If however the series contains so many points that\n * the spacing is less than the groupPixelWidth, Highcharts will try\n * to group it into appropriate groups so that each is more or less\n * two pixels wide. If multiple series with different group pixel widths\n * are drawn on the same x axis, all series will take the greatest width.\n * For example, line series have 2px default group width, while column\n * series have 10px. If combined, both the line and the column will\n * have 10px by default.\n *\n * @type {number}\n * @default 2\n * @apioption plotOptions.series.dataGrouping.groupPixelWidth\n */\n /**\n * By default only points within the visible range are grouped. Enabling this\n * option will force data grouping to calculate all grouped points for a given\n * dataset. That option prevents for example a column series from calculating\n * a grouped point partially. The effect is similar to\n * [Series.getExtremesFromAll](#plotOptions.series.getExtremesFromAll) but does\n * not affect yAxis extremes.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-groupall/\n * Two series with the same data but different groupAll setting\n *\n * @type {boolean}\n * @default false\n * @since 6.1.0\n * @apioption plotOptions.series.dataGrouping.groupAll\n */\n /**\n * Specifies how the last grouped point is positioned on the xAxis.\n * If firstAnchor and/or lastAnchor are defined, then those options take\n * precedence over anchor for the first and/or last grouped points.\n * Available options:\n *\n * -`start` places the point at the beginning of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)\n *\n * -`middle` places the point in the middle of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)\n *\n * -`end` places the point at the end of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)\n *\n * -`firstPoint` the first point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:13)\n *\n * -`lastPoint` the last point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:59)\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-first-anchor\n * Applying first and last anchor.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-last-anchor\n * Applying the last anchor in the chart with live data.\n *\n * @see [dataGrouping.anchor](#plotOptions.series.dataGrouping.anchor)\n *\n * @type {Highcharts.DataGroupingAnchorExtremes}\n * @since 9.1.0\n * @default start\n * @apioption plotOptions.series.dataGrouping.lastAnchor\n */\n /**\n * Normally, a group is indexed by the start of that group, so for example\n * when 30 daily values are grouped into one month, that month's x value\n * will be the 1st of the month. This apparently shifts the data to\n * the left. When the smoothed option is true, this is compensated for.\n * The data is shifted to the middle of the group, and min and max\n * values are preserved. Internally, this is used in the Navigator series.\n *\n * @type {boolean}\n * @default false\n * @deprecated\n * @apioption plotOptions.series.dataGrouping.smoothed\n */\n /**\n * An array determining what time intervals the data is allowed to be\n * grouped to. Each array item is an array where the first value is\n * the time unit and the second value another array of allowed multiples.\n *\n * Defaults to:\n * ```js\n * units: [[\n * 'millisecond', // unit name\n * [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n * ], [\n * 'second',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'minute',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'hour',\n * [1, 2, 3, 4, 6, 8, 12]\n * ], [\n * 'day',\n * [1]\n * ], [\n * 'week',\n * [1]\n * ], [\n * 'month',\n * [1, 3, 6]\n * ], [\n * 'year',\n * null\n * ]]\n * ```\n *\n * @type {Array|null)>>}\n * @apioption plotOptions.series.dataGrouping.units\n */\n /**\n * The approximate pixel width of each group. If for example a series\n * with 30 points is displayed over a 600 pixel wide plot area, no grouping\n * is performed. If however the series contains so many points that\n * the spacing is less than the groupPixelWidth, Highcharts will try\n * to group it into appropriate groups so that each is more or less\n * two pixels wide. Defaults to `10`.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-grouppixelwidth/\n * Two series with the same data density but different groupPixelWidth\n *\n * @type {number}\n * @default 10\n * @apioption plotOptions.column.dataGrouping.groupPixelWidth\n */\n ''; // required by JSDoc parsing\n\n return DataGroupingComposition;\n });\n _registerModule(_modules, 'masters/modules/datagrouping.src.js', [_modules['Core/Globals.js'], _modules['Extensions/DataGrouping/ApproximationDefaults.js'], _modules['Extensions/DataGrouping/ApproximationRegistry.js'], _modules['Extensions/DataGrouping/DataGrouping.js']], function (Highcharts, ApproximationDefaults, ApproximationRegistry, DataGrouping) {\n\n var G = Highcharts;\n G.dataGrouping = {\n approximationDefaults: ApproximationDefaults,\n approximations: ApproximationRegistry\n };\n DataGrouping.compose(G.Axis, G.Series, G.Tooltip);\n\n });\n _registerModule(_modules, 'Series/DataModifyComposition.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (Axis, Point, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var pointTooltipFormatter = Point.prototype.tooltipFormatter;\n var addEvent = U.addEvent,\n arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n correctFloat = U.correctFloat,\n defined = U.defined,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n var DataModifyComposition;\n (function (DataModifyComposition) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extends the series, axis and point classes with\n * compare and cumulative support.\n *\n * @private\n *\n * @param SeriesClass\n * Series class to use.\n *\n * @param AxisClass\n * Axis class to extend.\n *\n * @param PointClass\n * Point class to use.\n */\n function compose(SeriesClass, AxisClass, PointClass) {\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto = SeriesClass.prototype;\n seriesProto.setCompare = seriesSetCompare;\n seriesProto.setCumulative = seriesSetCumulative;\n addEvent(SeriesClass, 'afterInit', afterInit);\n addEvent(SeriesClass, 'afterGetExtremes', afterGetExtremes);\n addEvent(SeriesClass, 'afterProcessData', afterProcessData);\n }\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n var axisProto = AxisClass.prototype;\n axisProto.setCompare = axisSetCompare;\n axisProto.setModifier = setModifier;\n axisProto.setCumulative = axisSetCumulative;\n }\n if (composedClasses.indexOf(PointClass) === -1) {\n composedClasses.push(PointClass);\n var pointProto = PointClass.prototype;\n pointProto.tooltipFormatter = tooltipFormatter;\n }\n return SeriesClass;\n }\n DataModifyComposition.compose = compose;\n /* ********************************************************************** *\n * Start shared compare and cumulative logic *\n * ********************************************************************** */\n /**\n * Shared code for the axis.setCompare() and the axis.setCumulative()\n * methods. Inits the 'compare' or the 'cumulative' mode.\n * @private\n */\n function setModifier(mode, modeState, redraw) {\n if (!this.isXAxis) {\n this.series.forEach(function (series) {\n if (mode === 'compare' &&\n typeof modeState !== 'boolean') {\n series.setCompare(modeState, false);\n }\n else if (mode === 'cumulative' &&\n !isString(modeState)) {\n series.setCumulative(modeState, false);\n }\n });\n if (pick(redraw, true)) {\n this.chart.redraw();\n }\n }\n }\n /**\n * Extend the tooltip formatter by adding support for the point.change\n * variable as well as the changeDecimals option.\n *\n * @ignore\n * @function Highcharts.Point#tooltipFormatter\n *\n * @param {string} pointFormat\n */\n function tooltipFormatter(pointFormat) {\n var point = this, numberFormatter = point.series.chart.numberFormatter, replace = function (value) {\n pointFormat = pointFormat.replace('{point.' + value + '}', (point[value] > 0 && value === 'change' ? '+' : '') +\n numberFormatter(point[value], pick(point.series.tooltipOptions.changeDecimals, 2)));\n };\n if (defined(point.change)) {\n replace('change');\n }\n if (defined(point.cumulativeSum)) {\n replace('cumulativeSum');\n }\n return pointTooltipFormatter.apply(this, [pointFormat]);\n }\n /**\n * Extend series.init by adding a methods to modify the y values used\n * for plotting on the y axis. For compare mode, this method is called both\n * from the axis when finding dataMin and dataMax,\n * and from the series.translate method.\n *\n * @ignore\n * @function Highcharts.Series#init\n */\n function afterInit() {\n var compare = this.options.compare;\n var dataModify;\n if (compare === 'percent' ||\n compare === 'value' ||\n this.options.cumulative) {\n dataModify = new Additions(this);\n if (compare === 'percent' || compare === 'value') {\n // Set comparison mode\n dataModify.initCompare(compare);\n }\n else {\n // Set Cumulative Sum mode\n dataModify.initCumulative();\n }\n }\n this.dataModify = dataModify;\n }\n /**\n * Adjust the extremes (compare and cumulative modify the data).\n * @private\n */\n function afterGetExtremes(e) {\n var dataExtremes = e.dataExtremes,\n activeYData = dataExtremes.activeYData;\n if (this.dataModify && dataExtremes) {\n var extremes = void 0;\n if (this.options.compare) {\n extremes = [\n this.dataModify.modifyValue(dataExtremes.dataMin),\n this.dataModify.modifyValue(dataExtremes.dataMax)\n ];\n }\n else if (this.options.cumulative &&\n isArray(activeYData) &&\n // If only one y visible, sum doesn't change\n // so no need to change extremes\n activeYData.length >= 2) {\n extremes = Additions.getCumulativeExtremes(activeYData);\n }\n if (extremes) {\n dataExtremes.dataMin = arrayMin(extremes);\n dataExtremes.dataMax = arrayMax(extremes);\n }\n }\n }\n /* ********************************************************************** *\n * End shared compare and cumulative logic *\n * ********************************************************************** */\n /* ********************************************************************** *\n * Start value compare logic *\n * ********************************************************************** */\n /**\n * Highcharts Stock only. Set the\n * [compare](https://api.highcharts.com/highstock/plotOptions.series.compare)\n * mode of the series after render time.\n * In most cases it is more useful running\n * {@link Axis#setCompare} on the X axis to update all its series.\n *\n * @function Highcharts.Series#setCompare\n *\n * @param {string|null} [compare]\n * Can be one of `undefined` (default), `null`, `\"percent\"`\n * or `\"value\"`.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or to wait for a later call to\n * {@link Chart#redraw}.\n */\n function seriesSetCompare(compare, redraw) {\n // Survive to export, #5485 (and for options generally)\n this.options.compare = this.userOptions.compare = compare;\n // Fire series.init() that will set or delete series.dataModify\n this.update({}, pick(redraw, true));\n if (this.dataModify && (compare === 'value' || compare === 'percent')) {\n this.dataModify.initCompare(compare);\n }\n else {\n // When disabling, clear the points\n this.points.forEach(function (point) {\n delete point.change;\n });\n }\n }\n /**\n * Extend series.processData by finding the first y value in the plot area,\n * used for comparing the following values\n *\n * @ignore\n * @function Highcharts.Series#processData\n */\n function afterProcessData() {\n var series = this;\n if (series.xAxis && // not pies\n series.processedYData &&\n series.dataModify) {\n var processedXData = series.processedXData,\n processedYData = series.processedYData,\n length_1 = processedYData.length,\n compareStart = series.options.compareStart === true ? 0 : 1;\n var keyIndex = -1,\n i = void 0;\n // For series with more than one value (range, OHLC etc), compare\n // against close or the pointValKey (#4922, #3112, #9854)\n if (series.pointArrayMap) {\n keyIndex = series.pointArrayMap.indexOf(series.options.pointValKey || series.pointValKey || 'y');\n }\n // find the first value for comparison\n for (i = 0; i < length_1 - compareStart; i++) {\n var compareValue = processedYData[i] && keyIndex > -1 ?\n processedYData[i][keyIndex] : processedYData[i];\n if (isNumber(compareValue) &&\n compareValue !== 0 &&\n processedXData[i + compareStart] >= (series.xAxis.min || 0)) {\n series.dataModify.compareValue = compareValue;\n break;\n }\n }\n }\n }\n /**\n * Highcharts Stock only. Set the compare mode on all series\n * belonging to a Y axis.\n *\n * @see [plotOptions.series.compare](https://api.highcharts.com/highstock/plotOptions.series.compare)\n *\n * @sample stock/members/axis-setcompare/\n * Set compare\n *\n * @function Highcharts.Axis#setCompare\n *\n * @param {string|null} [compare]\n * The compare mode. Can be one of `undefined` (default), `null`,\n * `\"value\"` or `\"percent\"`.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or to wait for a later call to\n * {@link Chart#redraw}.\n */\n function axisSetCompare(compare, redraw) {\n this.setModifier('compare', compare, redraw);\n }\n /* ********************************************************************** *\n * End value compare logic *\n * ********************************************************************** */\n /* ********************************************************************** *\n * Start Cumulative Sum logic, author: Rafal Sebestjanski *\n * ********************************************************************** */\n /**\n * Highcharts Stock only. Set the\n * [cumulative](https://api.highcharts.com/highstock/plotOptions.series.cumulative)\n * mode of the series after render time.\n * In most cases it is more useful running\n * {@link Axis#setCumulative} on the Y axis to update all its series.\n *\n * @function Highcharts.Series#setCumulative\n *\n * @param {boolean} [cumulative=false]\n * Either enable or disable Cumulative Sum mode.\n * Can be one of `false` (default) or `true`.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or to wait for a later call to\n * {@link Chart#redraw}.\n */\n function seriesSetCumulative(cumulative, redraw) {\n // Set default value to false\n cumulative = pick(cumulative, false);\n // Survive to export, #5485 (and for options generally)\n this.options.cumulative = this.userOptions.cumulative = cumulative;\n // Fire series.init() that will set or delete series.dataModify\n this.update({}, pick(redraw, true));\n // If should, turn on the Cumulative Sum mode\n if (this.dataModify) {\n this.dataModify.initCumulative();\n }\n else {\n // When disabling, clear the points\n this.points.forEach(function (point) {\n delete point.cumulativeSum;\n });\n }\n }\n /**\n * Highcharts Stock only. Set the cumulative mode on all series\n * belonging to a Y axis.\n *\n * @see [plotOptions.series.cumulative](https://api.highcharts.com/highstock/plotOptions.series.cumulative)\n *\n * @sample stock/members/axis-setcumulative/\n * Set cumulative\n *\n * @function Highcharts.Axis#setCumulative\n *\n * @param {boolean} [cumulative]\n * Whether to disable or enable the cumulative mode.\n * Can be one of `undefined` (default, treated as `false`),\n * `false` or `true`.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or to wait for a later call to\n * {@link Chart#redraw}.\n */\n function axisSetCumulative(cumulative, redraw) {\n this.setModifier('cumulative', cumulative, redraw);\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * @private\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n /**\n * @private\n */\n function Additions(series) {\n this.series = series;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n Additions.prototype.modifyValue = function () {\n return 0;\n };\n /**\n * @ignore\n * @function Highcharts.Series#getCumulativeExtremes\n *\n * @param {Array} [activeYData]\n * An array cointaining all the points' y values\n * in a visible range.\n */\n Additions.getCumulativeExtremes = function (activeYData) {\n var cumulativeDataMin = Infinity,\n cumulativeDataMax = -Infinity;\n activeYData.reduce(function (prev, cur) {\n var sum = prev + cur;\n cumulativeDataMin = Math.min(cumulativeDataMin, sum, prev);\n cumulativeDataMax = Math.max(cumulativeDataMax, sum, prev);\n return sum;\n });\n return [cumulativeDataMin, cumulativeDataMax];\n };\n /**\n * @ignore\n * @function Highcharts.Series#initCompare\n *\n * @param {string} [compare]\n * Can be one of `\"percent\"` or `\"value\"`.\n */\n Additions.prototype.initCompare = function (compare) {\n // Set the modifyValue method\n this.modifyValue = function (value, index) {\n if (value === null) {\n value = 0;\n }\n var compareValue = this.compareValue;\n if (typeof value !== 'undefined' &&\n typeof compareValue !== 'undefined') { // #2601, #5814\n // Get the modified value\n if (compare === 'value') {\n value -= compareValue;\n // Compare percent\n }\n else {\n var compareBase = this.series.options.compareBase;\n value = 100 * (value / compareValue) -\n (compareBase === 100 ? 0 : 100);\n }\n // record for tooltip etc.\n if (typeof index !== 'undefined') {\n var point = this.series.points[index];\n if (point) {\n point.change = value;\n }\n }\n return value;\n }\n return 0;\n };\n };\n /**\n * @ignore\n * @function Highcharts.Series#initCumulative\n */\n Additions.prototype.initCumulative = function () {\n // Set the modifyValue method\n this.modifyValue = function (value, index) {\n if (value === null) {\n value = 0;\n }\n if (value !== void 0 && index !== void 0) {\n var prevPoint = index > 0 ?\n this.series.points[index - 1] : null;\n // Get the modified value\n if (prevPoint && prevPoint.cumulativeSum) {\n value = correctFloat(prevPoint.cumulativeSum + value);\n }\n // Record for tooltip etc.\n var point = this.series.points[index];\n if (point) {\n point.cumulativeSum = value;\n }\n return value;\n }\n return 0;\n };\n };\n return Additions;\n }());\n DataModifyComposition.Additions = Additions;\n })(DataModifyComposition || (DataModifyComposition = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Compare the values of the series against the first non-null, non-\n * zero value in the visible range. The y axis will show percentage\n * or absolute change depending on whether `compare` is set to `\"percent\"`\n * or `\"value\"`. When this is applied to multiple series, it allows\n * comparing the development of the series against each other. Adds\n * a `change` field to every point object.\n *\n * @see [compareBase](#plotOptions.series.compareBase)\n * @see [Axis.setCompare()](/class-reference/Highcharts.Axis#setCompare)\n * @see [Series.setCompare()](/class-reference/Highcharts.Series#setCompare)\n *\n * @sample {highstock} stock/plotoptions/series-compare-percent/\n * Percent\n * @sample {highstock} stock/plotoptions/series-compare-value/\n * Value\n *\n * @type {string}\n * @since 1.0.1\n * @product highstock\n * @validvalue [\"percent\", \"value\"]\n * @apioption plotOptions.series.compare\n */\n /**\n * Defines if comparison should start from the first point within the visible\n * range or should start from the first point **before** the range.\n *\n * In other words, this flag determines if first point within the visible range\n * will have 0% (`compareStart=true`) or should have been already calculated\n * according to the previous point (`compareStart=false`).\n *\n * @sample {highstock} stock/plotoptions/series-comparestart/\n * Calculate compare within visible range\n *\n * @type {boolean}\n * @default false\n * @since 6.0.0\n * @product highstock\n * @apioption plotOptions.series.compareStart\n */\n /**\n * When [compare](#plotOptions.series.compare) is `percent`, this option\n * dictates whether to use 0 or 100 as the base of comparison.\n *\n * @sample {highstock} stock/plotoptions/series-comparebase/\n * Compare base is 100\n *\n * @type {number}\n * @default 0\n * @since 5.0.6\n * @product highstock\n * @validvalue [0, 100]\n * @apioption plotOptions.series.compareBase\n */\n /**\n * Cumulative Sum feature replaces points' values with the following formula:\n * `sum of all previous points' values + current point's value`.\n * Works only for points in a visible range.\n * Adds the `cumulativeSum` field to each point object that can be accessed\n * e.g. in the [tooltip.pointFormat](https://api.highcharts.com/highstock/tooltip.pointFormat).\n *\n * @see [Axis.setCumulative()](/class-reference/Highcharts.Axis#setCumulative)\n * @see [Series.setCumulative()](/class-reference/Highcharts.Series#setCumulative)\n *\n * @sample {highstock} stock/plotoptions/series-cumulative-sum/\n * Cumulative Sum\n *\n * @type {boolean}\n * @default false\n * @since 9.3.0\n * @product highstock\n * @apioption plotOptions.series.cumulative\n */\n ''; // keeps doclets above in transpiled file\n\n return DataModifyComposition;\n });\n _registerModule(_modules, 'Core/Axis/NavigatorAxisComposition.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var isTouchDevice = H.isTouchDevice;\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n isNumber = U.isNumber,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function onAxisInit() {\n var axis = this;\n if (!axis.navigatorAxis) {\n axis.navigatorAxis = new NavigatorAxisAdditions(axis);\n }\n }\n /**\n * For Stock charts, override selection zooming with some special features\n * because X axis zooming is already allowed by the Navigator and Range\n * selector.\n * @private\n */\n function onAxisZoom(e) {\n var axis = this,\n chart = axis.chart,\n chartOptions = chart.options,\n navigator = chartOptions.navigator,\n navigatorAxis = axis.navigatorAxis,\n pinchType = chartOptions.chart.zooming.pinchType,\n rangeSelector = chartOptions.rangeSelector,\n zoomType = chartOptions.chart.zooming.type;\n if (axis.isXAxis && ((navigator && navigator.enabled) ||\n (rangeSelector && rangeSelector.enabled))) {\n // For y only zooming, ignore the X axis completely\n if (zoomType === 'y') {\n e.zoomed = false;\n // For xy zooming, record the state of the zoom before zoom\n // selection, then when the reset button is pressed, revert to\n // this state. This should apply only if the chart is\n // initialized with a range (#6612), otherwise zoom all the way\n // out.\n }\n else if (((!isTouchDevice && zoomType === 'xy') ||\n (isTouchDevice && pinchType === 'xy')) &&\n axis.options.range) {\n var previousZoom = navigatorAxis.previousZoom;\n if (defined(e.newMin)) {\n navigatorAxis.previousZoom = [axis.min, axis.max];\n }\n else if (previousZoom) {\n e.newMin = previousZoom[0];\n e.newMax = previousZoom[1];\n navigatorAxis.previousZoom = void 0;\n }\n }\n }\n if (typeof e.zoomed !== 'undefined') {\n e.preventDefault();\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * @private\n * @class\n */\n var NavigatorAxisAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function NavigatorAxisAdditions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n NavigatorAxisAdditions.compose = function (AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('navigatorAxis');\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'zoom', onAxisZoom);\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n NavigatorAxisAdditions.prototype.destroy = function () {\n this.axis = void 0;\n };\n /**\n * Add logic to normalize the zoomed range in order to preserve the pressed\n * state of range selector buttons\n *\n * @private\n * @function Highcharts.Axis#toFixedRange\n */\n NavigatorAxisAdditions.prototype.toFixedRange = function (pxMin, pxMax, fixedMin, fixedMax) {\n var axis = this.axis,\n chart = axis.chart;\n var newMin = pick(fixedMin,\n axis.translate(pxMin,\n true, !axis.horiz)),\n newMax = pick(fixedMax,\n axis.translate(pxMax,\n true, !axis.horiz));\n var fixedRange = chart && chart.fixedRange,\n halfPointRange = (axis.pointRange || 0) / 2,\n changeRatio = fixedRange && (newMax - newMin) / fixedRange;\n // Add/remove half point range to/from the extremes (#1172)\n if (!defined(fixedMin)) {\n newMin = correctFloat(newMin + halfPointRange);\n }\n if (!defined(fixedMax)) {\n newMax = correctFloat(newMax - halfPointRange);\n }\n // If the difference between the fixed range and the actual requested\n // range is too great, the user is dragging across an ordinal gap, and\n // we need to release the range selector button.\n if (changeRatio > 0.7 && changeRatio < 1.3) {\n if (fixedMax) {\n newMin = newMax - fixedRange;\n }\n else {\n newMax = newMin + fixedRange;\n }\n }\n if (!isNumber(newMin) || !isNumber(newMax)) { // #1195, #7411\n newMin = newMax = void 0;\n }\n return {\n min: newMin,\n max: newMax\n };\n };\n return NavigatorAxisAdditions;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return NavigatorAxisAdditions;\n });\n _registerModule(_modules, 'Stock/Navigator/NavigatorDefaults.js', [_modules['Core/Color/Color.js'], _modules['Core/Series/SeriesRegistry.js']], function (Color, SeriesRegistry) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var seriesTypes = SeriesRegistry.seriesTypes;\n /* *\n *\n * Constants\n *\n * */\n /**\n * The navigator is a small series below the main series, displaying\n * a view of the entire data set. It provides tools to zoom in and\n * out on parts of the data as well as panning across the dataset.\n *\n * @product highstock gantt\n * @optionparent navigator\n */\n var NavigatorDefaults = {\n /**\n * Whether the navigator and scrollbar should adapt to updated data\n * in the base X axis. When loading data async, as in the demo below,\n * this should be `false`. Otherwise new data will trigger navigator\n * redraw, which will cause unwanted looping. In the demo below, the\n * data in the navigator is set only once. On navigating, only the main\n * chart content is updated.\n *\n * @sample {highstock} stock/demo/lazy-loading/\n * Set to false with async data loading\n *\n * @type {boolean}\n * @default true\n * @apioption navigator.adaptToUpdatedData\n */\n /**\n * An integer identifying the index to use for the base series, or a\n * string representing the id of the series.\n *\n * **Note**: As of Highcharts 5.0, this is now a deprecated option.\n * Prefer [series.showInNavigator](#plotOptions.series.showInNavigator).\n *\n * @see [series.showInNavigator](#plotOptions.series.showInNavigator)\n *\n * @deprecated\n * @type {number|string}\n * @default 0\n * @apioption navigator.baseSeries\n */\n /**\n * Enable or disable the navigator.\n *\n * @sample {highstock} stock/navigator/enabled/\n * Disable the navigator\n *\n * @type {boolean}\n * @default true\n * @apioption navigator.enabled\n */\n /**\n * When the chart is inverted, whether to draw the navigator on the\n * opposite side.\n *\n * @type {boolean}\n * @default false\n * @since 5.0.8\n * @apioption navigator.opposite\n */\n /**\n * The height of the navigator.\n *\n * @sample {highstock} stock/navigator/height/\n * A higher navigator\n */\n height: 40,\n /**\n * The distance from the nearest element, the X axis or X axis labels.\n *\n * @sample {highstock} stock/navigator/margin/\n * A margin of 2 draws the navigator closer to the X axis labels\n */\n margin: 25,\n /**\n * Whether the mask should be inside the range marking the zoomed\n * range, or outside. In Highcharts Stock 1.x it was always `false`.\n *\n * @sample {highstock} stock/navigator/maskinside-false/\n * False, mask outside\n *\n * @since 2.0\n */\n maskInside: true,\n /**\n * Options for the handles for dragging the zoomed area.\n *\n * @sample {highstock} stock/navigator/handles/\n * Colored handles\n */\n handles: {\n /**\n * Width for handles.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @since 6.0.0\n */\n width: 7,\n /**\n * Height for handles.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @since 6.0.0\n */\n height: 15,\n /**\n * Array to define shapes of handles. 0-index for left, 1-index for\n * right.\n *\n * Additionally, the URL to a graphic can be given on this form:\n * `url(graphic.png)`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @type {Array}\n * @default [\"navigator-handle\", \"navigator-handle\"]\n * @since 6.0.0\n */\n symbols: ['navigator-handle', 'navigator-handle'],\n /**\n * Allows to enable/disable handles.\n *\n * @since 6.0.0\n */\n enabled: true,\n /**\n * The width for the handle border and the stripes inside.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @since 6.0.0\n * @apioption navigator.handles.lineWidth\n */\n lineWidth: 1,\n /**\n * The fill for the handle.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * The stroke for the handle border and the stripes inside.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#999999\" /* Palette.neutralColor40 */\n },\n /**\n * The color of the mask covering the areas of the navigator series\n * that are currently not visible in the main series. The default\n * color is bluish with an opacity of 0.3 to see the series below.\n *\n * @see In styled mode, the mask is styled with the\n * `.highcharts-navigator-mask` and\n * `.highcharts-navigator-mask-inside` classes.\n *\n * @sample {highstock} stock/navigator/maskfill/\n * Blue, semi transparent mask\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default rgba(102,133,194,0.3)\n */\n maskFill: color(\"#6685c2\" /* Palette.highlightColor60 */).setOpacity(0.3).get(),\n /**\n * The color of the line marking the currently zoomed area in the\n * navigator.\n *\n * @sample {highstock} stock/navigator/outline/\n * 2px blue outline\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n */\n outlineColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The width of the line marking the currently zoomed area in the\n * navigator.\n *\n * @see In styled mode, the outline stroke width is set with the\n * `.highcharts-navigator-outline` class.\n *\n * @sample {highstock} stock/navigator/outline/\n * 2px blue outline\n *\n * @type {number}\n */\n outlineWidth: 1,\n /**\n * Options for the navigator series. Available options are the same\n * as any series, documented at [plotOptions](#plotOptions.series)\n * and [series](#series).\n *\n * Unless data is explicitly defined on navigator.series, the data\n * is borrowed from the first series in the chart.\n *\n * Default series options for the navigator series are:\n * ```js\n * series: {\n * type: 'areaspline',\n * fillOpacity: 0.05,\n * dataGrouping: {\n * smoothed: true\n * },\n * lineWidth: 1,\n * marker: {\n * enabled: false\n * }\n * }\n * ```\n *\n * @see In styled mode, the navigator series is styled with the\n * `.highcharts-navigator-series` class.\n *\n * @sample {highstock} stock/navigator/series-data/\n * Using a separate data set for the navigator\n * @sample {highstock} stock/navigator/series/\n * A green navigator series\n *\n * @type {*|Array<*>|Highcharts.SeriesOptionsType|Array}\n */\n series: {\n /**\n * The type of the navigator series.\n *\n * Heads up:\n * In column-type navigator, zooming is limited to at least one\n * point with its `pointRange`.\n *\n * @sample {highstock} stock/navigator/column/\n * Column type navigator\n *\n * @type {string}\n * @default {highstock} `areaspline` if defined, otherwise `line`\n * @default {gantt} gantt\n */\n type: (typeof seriesTypes.areaspline === 'undefined' ?\n 'line' :\n 'areaspline'),\n /**\n * The fill opacity of the navigator series.\n */\n fillOpacity: 0.05,\n /**\n * The pixel line width of the navigator series.\n */\n lineWidth: 1,\n /**\n * @ignore-option\n */\n compare: null,\n /**\n * Unless data is explicitly defined, the data is borrowed from the\n * first series in the chart.\n *\n * @type {Array|object|null>}\n * @product highstock\n * @apioption navigator.series.data\n */\n /**\n * Data grouping options for the navigator series.\n *\n * @extends plotOptions.series.dataGrouping\n */\n dataGrouping: {\n approximation: 'average',\n enabled: true,\n groupPixelWidth: 2,\n // Replace smoothed property by anchors, #12455.\n firstAnchor: 'firstPoint',\n anchor: 'middle',\n lastAnchor: 'lastPoint',\n // Day and week differs from plotOptions.series.dataGrouping\n units: [\n ['millisecond', [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]],\n ['second', [1, 2, 5, 10, 15, 30]],\n ['minute', [1, 2, 5, 10, 15, 30]],\n ['hour', [1, 2, 3, 4, 6, 8, 12]],\n ['day', [1, 2, 3, 4]],\n ['week', [1, 2, 3]],\n ['month', [1, 3, 6]],\n ['year', null]\n ]\n },\n /**\n * Data label options for the navigator series. Data labels are\n * disabled by default on the navigator series.\n *\n * @extends plotOptions.series.dataLabels\n */\n dataLabels: {\n enabled: false,\n zIndex: 2 // #1839\n },\n id: 'highcharts-navigator-series',\n className: 'highcharts-navigator-series',\n /**\n * Sets the fill color of the navigator series.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption navigator.series.color\n */\n /**\n * Line color for the navigator series. Allows setting the color\n * while disallowing the default candlestick setting.\n *\n * @type {Highcharts.ColorString|null}\n */\n lineColor: null,\n marker: {\n enabled: false\n },\n /**\n * Since Highcharts Stock v8, default value is the same as default\n * `pointRange` defined for a specific type (e.g. `null` for\n * column type).\n *\n * In Highcharts Stock version < 8, defaults to 0.\n *\n * @extends plotOptions.series.pointRange\n * @type {number|null}\n * @apioption navigator.series.pointRange\n */\n /**\n * The threshold option. Setting it to 0 will make the default\n * navigator area series draw its area from the 0 value and up.\n *\n * @type {number|null}\n */\n threshold: null\n },\n /**\n * Enable or disable navigator sticking to right, while adding new\n * points. If `undefined`, the navigator sticks to the axis maximum only\n * if it was already at the maximum prior to adding points.\n *\n * @type {boolean}\n * @default undefined\n * @since 10.2.1\n * @sample {highstock} stock/navigator/sticktomax-false/\n * stickToMax set to false\n * @apioption navigator.stickToMax\n */\n /**\n * Options for the navigator X axis. Default series options for the\n * navigator xAxis are:\n * ```js\n * xAxis: {\n * tickWidth: 0,\n * lineWidth: 0,\n * gridLineWidth: 1,\n * tickPixelInterval: 200,\n * labels: {\n * align: 'left',\n * style: {\n * color: '#888'\n * },\n * x: 3,\n * y: -4\n * }\n * }\n * ```\n *\n * @extends xAxis\n * @excluding linkedTo, maxZoom, minRange, opposite, range, scrollbar,\n * showEmpty, maxRange\n */\n xAxis: {\n /**\n * Additional range on the right side of the xAxis. Works similar to\n * xAxis.maxPadding, but value is set in milliseconds.\n * Can be set for both, main xAxis and navigator's xAxis.\n *\n * @since 6.0.0\n */\n overscroll: 0,\n className: 'highcharts-navigator-xaxis',\n tickLength: 0,\n lineWidth: 0,\n gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n gridLineWidth: 1,\n tickPixelInterval: 200,\n labels: {\n align: 'left',\n /**\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @ignore */\n color: \"#999999\" /* Palette.neutralColor40 */\n },\n x: 3,\n y: -4\n },\n crosshair: false\n },\n /**\n * Options for the navigator Y axis. Default series options for the\n * navigator yAxis are:\n * ```js\n * yAxis: {\n * gridLineWidth: 0,\n * startOnTick: false,\n * endOnTick: false,\n * minPadding: 0.1,\n * maxPadding: 0.1,\n * labels: {\n * enabled: false\n * },\n * title: {\n * text: null\n * },\n * tickWidth: 0\n * }\n * ```\n *\n * @extends yAxis\n * @excluding height, linkedTo, maxZoom, minRange, ordinal, range,\n * showEmpty, scrollbar, top, units, maxRange, minLength,\n * maxLength, resize\n */\n yAxis: {\n className: 'highcharts-navigator-yaxis',\n gridLineWidth: 0,\n startOnTick: false,\n endOnTick: false,\n minPadding: 0.1,\n maxPadding: 0.1,\n labels: {\n enabled: false\n },\n crosshair: false,\n title: {\n text: null\n },\n tickLength: 0,\n tickWidth: 0\n }\n };\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Maximum range which can be set using the navigator's handles.\n * Opposite of [xAxis.minRange](#xAxis.minRange).\n *\n * @sample {highstock} stock/navigator/maxrange/\n * Defined max and min range\n *\n * @type {number}\n * @since 6.0.0\n * @product highstock gantt\n * @apioption xAxis.maxRange\n */\n (''); // keeps doclets above in JS file\n\n return NavigatorDefaults;\n });\n _registerModule(_modules, 'Stock/Navigator/NavigatorSymbols.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n /**\n * Draw one of the handles on the side of the zoomed range in the navigator.\n * @private\n */\n function navigatorHandle(_x, _y, width, height, options) {\n if (options === void 0) { options = {}; }\n var halfWidth = options.width ? options.width / 2 : width,\n markerPosition = Math.round(halfWidth / 3) + 0.5;\n height = options.height || height;\n return [\n ['M', -halfWidth - 1, 0.5],\n ['L', halfWidth, 0.5],\n ['L', halfWidth, height + 0.5],\n ['L', -halfWidth - 1, height + 0.5],\n ['L', -halfWidth - 1, 0.5],\n ['M', -markerPosition, 4],\n ['L', -markerPosition, height - 3],\n ['M', markerPosition - 1, 4],\n ['L', markerPosition - 1, height - 3]\n ];\n }\n /* *\n *\n * Default Export\n *\n * */\n var NavigatorSymbols = {\n 'navigator-handle': navigatorHandle\n };\n\n return NavigatorSymbols;\n });\n _registerModule(_modules, 'Stock/Navigator/NavigatorComposition.js', [_modules['Core/Defaults.js'], _modules['Core/Globals.js'], _modules['Core/Axis/NavigatorAxisComposition.js'], _modules['Stock/Navigator/NavigatorDefaults.js'], _modules['Stock/Navigator/NavigatorSymbols.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (D, H, NavigatorAxisAdditions, NavigatorDefaults, NavigatorSymbols, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions,\n setOptions = D.setOptions;\n var isTouchDevice = H.isTouchDevice;\n var getRendererType = RendererRegistry.getRendererType;\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Variables\n *\n * */\n var NavigatorConstructor;\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(AxisClass, ChartClass, NavigatorClass, SeriesClass) {\n NavigatorAxisAdditions.compose(AxisClass);\n NavigatorConstructor = NavigatorClass;\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n var chartProto = ChartClass.prototype;\n chartProto.callbacks.push(onChartCallback);\n addEvent(ChartClass, 'afterAddSeries', onChartAfterAddSeries);\n addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);\n addEvent(ChartClass, 'afterUpdate', onChartAfterUpdate);\n addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n addEvent(ChartClass, 'beforeShowResetZoom', onChartBeforeShowResetZoom);\n addEvent(ChartClass, 'update', onChartUpdate);\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n addEvent(SeriesClass, 'afterUpdate', onSeriesAfterUpdate);\n }\n if (composedClasses.indexOf(getRendererType) === -1) {\n composedClasses.push(getRendererType);\n extend(getRendererType().prototype.symbols, NavigatorSymbols);\n }\n if (composedClasses.indexOf(setOptions) === -1) {\n composedClasses.push(setOptions);\n extend(defaultOptions, { navigator: NavigatorDefaults });\n }\n }\n /**\n * Handle adding new series.\n * @private\n */\n function onChartAfterAddSeries() {\n if (this.navigator) {\n // Recompute which series should be shown in navigator, and add them\n this.navigator.setBaseSeries(null, false);\n }\n }\n /**\n * For stock charts, extend the Chart.setChartSize method so that we can set the\n * final top position of the navigator once the height of the chart, including\n * the legend, is determined. #367. We can't use Chart.getMargins, because\n * labels offsets are not calculated yet.\n * @private\n */\n function onChartAfterSetChartSize() {\n var legend = this.legend,\n navigator = this.navigator;\n var scrollbarHeight,\n legendOptions,\n xAxis,\n yAxis;\n if (navigator) {\n legendOptions = legend && legend.options;\n xAxis = navigator.xAxis;\n yAxis = navigator.yAxis;\n scrollbarHeight = navigator.scrollbarHeight;\n // Compute the top position\n if (this.inverted) {\n navigator.left = navigator.opposite ?\n this.chartWidth - scrollbarHeight -\n navigator.height :\n this.spacing[3] + scrollbarHeight;\n navigator.top = this.plotTop + scrollbarHeight;\n }\n else {\n navigator.left = pick(xAxis.left, this.plotLeft + scrollbarHeight);\n navigator.top = navigator.navigatorOptions.top ||\n this.chartHeight -\n navigator.height -\n scrollbarHeight -\n this.spacing[2] -\n (this.rangeSelector && this.extraBottomMargin ?\n this.rangeSelector.getHeight() :\n 0) -\n ((legendOptions &&\n legendOptions.verticalAlign === 'bottom' &&\n legendOptions.layout !== 'proximate' && // #13392\n legendOptions.enabled &&\n !legendOptions.floating) ?\n legend.legendHeight +\n pick(legendOptions.margin, 10) :\n 0) -\n (this.titleOffset ? this.titleOffset[2] : 0);\n }\n if (xAxis && yAxis) { // false if navigator is disabled (#904)\n if (this.inverted) {\n xAxis.options.left = yAxis.options.left = navigator.left;\n }\n else {\n xAxis.options.top = yAxis.options.top = navigator.top;\n }\n xAxis.setAxisSize();\n yAxis.setAxisSize();\n }\n }\n }\n /**\n * Initialize navigator, if no scrolling exists yet.\n * @private\n */\n function onChartAfterUpdate(event) {\n if (!this.navigator && !this.scroller &&\n (this.options.navigator.enabled ||\n this.options.scrollbar.enabled)) {\n this.scroller = this.navigator = new NavigatorConstructor(this);\n if (pick(event.redraw, true)) {\n this.redraw(event.animation); // #7067\n }\n }\n }\n /**\n * Initialize navigator for stock charts\n * @private\n */\n function onChartBeforeRender() {\n var options = this.options;\n if (options.navigator.enabled ||\n options.scrollbar.enabled) {\n this.scroller = this.navigator = new NavigatorConstructor(this);\n }\n }\n /**\n * For Stock charts. For x only zooming, do not to create the zoom button\n * because X axis zooming is already allowed by the Navigator and Range\n * selector. (#9285)\n * @private\n */\n function onChartBeforeShowResetZoom() {\n var chartOptions = this.options,\n navigator = chartOptions.navigator,\n rangeSelector = chartOptions.rangeSelector;\n if (((navigator && navigator.enabled) ||\n (rangeSelector && rangeSelector.enabled)) &&\n ((!isTouchDevice &&\n chartOptions.chart.zooming.type === 'x') ||\n (isTouchDevice &&\n chartOptions.chart.zooming.pinchType === 'x'))) {\n return false;\n }\n }\n /**\n * @private\n */\n function onChartCallback(chart) {\n var navigator = chart.navigator;\n // Initialize the navigator\n if (navigator && chart.xAxis[0]) {\n var extremes = chart.xAxis[0].getExtremes();\n navigator.render(extremes.min, extremes.max);\n }\n }\n /**\n * Merge options, if no scrolling exists yet\n * @private\n */\n function onChartUpdate(e) {\n var navigatorOptions = (e.options.navigator || {}),\n scrollbarOptions = (e.options.scrollbar || {});\n if (!this.navigator && !this.scroller &&\n (navigatorOptions.enabled || scrollbarOptions.enabled)) {\n merge(true, this.options.navigator, navigatorOptions);\n merge(true, this.options.scrollbar, scrollbarOptions);\n delete e.options.navigator;\n delete e.options.scrollbar;\n }\n }\n /**\n * Handle updating series\n * @private\n */\n function onSeriesAfterUpdate() {\n if (this.chart.navigator && !this.options.isInternal) {\n this.chart.navigator.setBaseSeries(null, false);\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var NavigatorComposition = {\n compose: compose\n };\n\n return NavigatorComposition;\n });\n _registerModule(_modules, 'Core/Axis/ScrollbarAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n defined = U.defined,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Creates scrollbars if enabled.\n * @private\n */\n var ScrollbarAxis = /** @class */ (function () {\n function ScrollbarAxis() {\n }\n /**\n * Attaches to axis events to create scrollbars if enabled.\n *\n * @private\n *\n * @param AxisClass\n * Axis class to extend.\n *\n * @param ScrollbarClass\n * Scrollbar class to use.\n */\n ScrollbarAxis.compose = function (AxisClass, ScrollbarClass) {\n if (ScrollbarAxis.composed.indexOf(AxisClass) === -1) {\n ScrollbarAxis.composed.push(AxisClass);\n }\n else {\n return AxisClass;\n }\n var getExtremes = function (axis) {\n var axisMin = pick(axis.options && axis.options.min,\n axis.min);\n var axisMax = pick(axis.options && axis.options.max,\n axis.max);\n return {\n axisMin: axisMin,\n axisMax: axisMax,\n scrollMin: defined(axis.dataMin) ?\n Math.min(axisMin, axis.min, axis.dataMin, pick(axis.threshold, Infinity)) : axisMin,\n scrollMax: defined(axis.dataMax) ?\n Math.max(axisMax, axis.max, axis.dataMax, pick(axis.threshold, -Infinity)) : axisMax\n };\n };\n // Wrap axis initialization and create scrollbar if enabled:\n addEvent(AxisClass, 'afterInit', function () {\n var axis = this;\n if (axis.options &&\n axis.options.scrollbar &&\n axis.options.scrollbar.enabled) {\n // Predefined options:\n axis.options.scrollbar.vertical = !axis.horiz;\n axis.options.startOnTick = axis.options.endOnTick = false;\n axis.scrollbar = new ScrollbarClass(axis.chart.renderer, axis.options.scrollbar, axis.chart);\n addEvent(axis.scrollbar, 'changed', function (e) {\n var _a = getExtremes(axis),\n axisMin = _a.axisMin,\n axisMax = _a.axisMax,\n unitedMin = _a.scrollMin,\n unitedMax = _a.scrollMax,\n range = unitedMax - unitedMin,\n to,\n from;\n // #12834, scroll when show/hide series, wrong extremes\n if (!defined(axisMin) || !defined(axisMax)) {\n return;\n }\n if ((axis.horiz && !axis.reversed) ||\n (!axis.horiz && axis.reversed)) {\n to = unitedMin + range * this.to;\n from = unitedMin + range * this.from;\n }\n else {\n // y-values in browser are reversed, but this also\n // applies for reversed horizontal axis:\n to = unitedMin + range * (1 - this.from);\n from = unitedMin + range * (1 - this.to);\n }\n if (this.shouldUpdateExtremes(e.DOMType)) {\n axis.setExtremes(from, to, true, (e.DOMType !== 'mousemove' &&\n e.DOMType !== 'touchmove'), e);\n }\n else {\n // When live redraw is disabled, don't change extremes\n // Only change the position of the scollbar thumb\n this.setRange(this.from, this.to);\n }\n });\n }\n });\n // Wrap rendering axis, and update scrollbar if one is created:\n addEvent(AxisClass, 'afterRender', function () {\n var axis = this,\n _a = getExtremes(axis),\n scrollMin = _a.scrollMin,\n scrollMax = _a.scrollMax,\n scrollbar = axis.scrollbar,\n offset = (axis.axisTitleMargin + (axis.titleOffset || 0)),\n scrollbarsOffsets = axis.chart.scrollbarsOffsets,\n axisMargin = axis.options.margin || 0,\n offsetsIndex,\n from,\n to;\n if (scrollbar) {\n if (axis.horiz) {\n // Reserve space for labels/title\n if (!axis.opposite) {\n scrollbarsOffsets[1] += offset;\n }\n scrollbar.position(axis.left, (axis.top +\n axis.height +\n 2 +\n scrollbarsOffsets[1] -\n (axis.opposite ? axisMargin : 0)), axis.width, axis.height);\n // Next scrollbar should reserve space for margin (if set)\n if (!axis.opposite) {\n scrollbarsOffsets[1] += axisMargin;\n }\n offsetsIndex = 1;\n }\n else {\n // Reserve space for labels/title\n if (axis.opposite) {\n scrollbarsOffsets[0] += offset;\n }\n var xPosition = void 0;\n if (!scrollbar.options.opposite) {\n xPosition = axis.opposite ? 0 : axisMargin;\n }\n else {\n xPosition = axis.left +\n axis.width +\n 2 +\n scrollbarsOffsets[0] -\n (axis.opposite ? 0 : axisMargin);\n }\n scrollbar.position(xPosition, axis.top, axis.width, axis.height);\n // Next scrollbar should reserve space for margin (if set)\n if (axis.opposite) {\n scrollbarsOffsets[0] += axisMargin;\n }\n offsetsIndex = 0;\n }\n scrollbarsOffsets[offsetsIndex] += scrollbar.size +\n scrollbar.options.margin;\n if (isNaN(scrollMin) ||\n isNaN(scrollMax) ||\n !defined(axis.min) ||\n !defined(axis.max) ||\n axis.min === axis.max // #10733\n ) {\n // default action: when extremes are the same or there is\n // not extremes on the axis, but scrollbar exists, make it\n // full size\n scrollbar.setRange(0, 1);\n }\n else {\n from = ((axis.min - scrollMin) /\n (scrollMax - scrollMin));\n to = ((axis.max - scrollMin) /\n (scrollMax - scrollMin));\n if ((axis.horiz && !axis.reversed) ||\n (!axis.horiz && axis.reversed)) {\n scrollbar.setRange(from, to);\n }\n else {\n // inverse vertical axis\n scrollbar.setRange(1 - to, 1 - from);\n }\n }\n }\n });\n // Make space for a scrollbar:\n addEvent(AxisClass, 'afterGetOffset', function () {\n var axis = this,\n opposite = axis.scrollbar && !axis.scrollbar.options.opposite,\n index = axis.horiz ? 2 : opposite ? 3 : 1,\n scrollbar = axis.scrollbar;\n if (scrollbar) {\n // reset scrollbars offsets\n axis.chart.scrollbarsOffsets = [0, 0];\n axis.chart.axisOffset[index] +=\n scrollbar.size + scrollbar.options.margin;\n }\n });\n return AxisClass;\n };\n ScrollbarAxis.composed = [];\n return ScrollbarAxis;\n }());\n\n return ScrollbarAxis;\n });\n _registerModule(_modules, 'Stock/Scrollbar/ScrollbarDefaults.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var isTouchDevice = H.isTouchDevice;\n /* *\n *\n * Constant\n *\n * */\n /**\n *\n * The scrollbar is a means of panning over the X axis of a stock chart.\n * Scrollbars can also be applied to other types of axes.\n *\n * Another approach to scrollable charts is the [chart.scrollablePlotArea](\n * https://api.highcharts.com/highcharts/chart.scrollablePlotArea) option that\n * is especially suitable for simpler cartesian charts on mobile.\n *\n * In styled mode, all the presentational options for the\n * scrollbar are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample stock/yaxis/inverted-bar-scrollbar/\n * A scrollbar on a simple bar chart\n *\n * @product highstock gantt\n * @optionparent scrollbar\n *\n * @private\n */\n var ScrollbarDefaults = {\n /**\n * The height of the scrollbar. The height also applies to the width\n * of the scroll arrows so that they are always squares. Defaults to\n * 20 for touch devices and 14 for mouse devices.\n *\n * @sample stock/scrollbar/height/\n * A 30px scrollbar\n *\n * @type {number}\n * @default 20/14\n */\n height: isTouchDevice ? 20 : 14,\n /**\n * The border rounding radius of the bar.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n barBorderRadius: 0,\n /**\n * The corner radius of the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n buttonBorderRadius: 0,\n /**\n * Enable or disable the scrollbar.\n *\n * @sample stock/scrollbar/enabled/\n * Disable the scrollbar,\n only use navigator\n *\n * @type {boolean}\n * @default true\n * @apioption scrollbar.enabled\n */\n /**\n * Whether to redraw the main chart as the scrollbar or the navigator\n * zoomed window is moved. Defaults to `true` for modern browsers and\n * `false` for legacy IE browsers as well as mobile devices.\n *\n * @sample stock/scrollbar/liveredraw\n * Setting live redraw to false\n *\n * @type {boolean}\n * @since 1.3\n */\n liveRedraw: void 0,\n /**\n * The margin between the scrollbar and its axis when the scrollbar is\n * applied directly to an axis.\n */\n margin: 10,\n /**\n * The minimum width of the scrollbar.\n *\n * @since 1.2.5\n */\n minWidth: 6,\n /** @ignore-option */\n opposite: true,\n /**\n * Whether to show or hide the scrollbar when the scrolled content is\n * zoomed out to it full extent.\n *\n * @type {boolean}\n * @default true\n * @apioption scrollbar.showFull\n */\n step: 0.2,\n /**\n * The z index of the scrollbar group.\n */\n zIndex: 3,\n /**\n * The background color of the scrollbar itself.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n barBackgroundColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The width of the bar's border.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n barBorderWidth: 1,\n /**\n * The color of the scrollbar's border.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n barBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The color of the small arrow inside the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n buttonArrowColor: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * The color of scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n buttonBackgroundColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The color of the border of the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n buttonBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The border width of the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n buttonBorderWidth: 1,\n /**\n * The color of the small rifles in the middle of the scrollbar.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n rifleColor: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * The color of the track background.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n trackBackgroundColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * The color of the border of the scrollbar track.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n trackBorderColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * The corner radius of the border of the scrollbar track.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {number}\n * @default 0\n * @apioption scrollbar.trackBorderRadius\n */\n /**\n * The width of the border of the scrollbar track.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n trackBorderWidth: 1\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ScrollbarDefaults;\n });\n _registerModule(_modules, 'Stock/Scrollbar/Scrollbar.js', [_modules['Core/Defaults.js'], _modules['Core/Globals.js'], _modules['Core/Axis/ScrollbarAxis.js'], _modules['Stock/Scrollbar/ScrollbarDefaults.js'], _modules['Core/Utilities.js']], function (D, H, ScrollbarAxis, ScrollbarDefaults, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n fireEvent = U.fireEvent,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Constants\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * A reusable scrollbar, internally used in Highcharts Stock's\n * navigator and optionally on individual axes.\n *\n * @private\n * @class\n * @name Highcharts.Scrollbar\n * @param {Highcharts.SVGRenderer} renderer\n * @param {Highcharts.ScrollbarOptions} options\n * @param {Highcharts.Chart} chart\n */\n var Scrollbar = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Scrollbar(renderer, options, chart) {\n /* *\n *\n * Properties\n *\n * */\n this._events = [];\n this.chart = void 0;\n this.chartX = 0;\n this.chartY = 0;\n this.from = 0;\n this.group = void 0;\n this.options = void 0;\n this.renderer = void 0;\n this.scrollbar = void 0;\n this.scrollbarButtons = [];\n this.scrollbarGroup = void 0;\n this.scrollbarLeft = 0;\n this.scrollbarRifles = void 0;\n this.scrollbarStrokeWidth = 1;\n this.scrollbarTop = 0;\n this.size = 0;\n this.to = 0;\n this.track = void 0;\n this.trackBorderWidth = 1;\n this.userOptions = void 0;\n this.x = 0;\n this.y = 0;\n this.init(renderer, options, chart);\n }\n /* *\n *\n * Static Functions\n *\n * */\n Scrollbar.compose = function (AxisClass) {\n ScrollbarAxis.compose(AxisClass, Scrollbar);\n };\n /**\n * When we have vertical scrollbar, rifles and arrow in buttons should be\n * rotated. The same method is used in Navigator's handles, to rotate them.\n *\n * @function Highcharts.swapXY\n *\n * @param {Highcharts.SVGPathArray} path\n * Path to be rotated.\n *\n * @param {boolean} [vertical]\n * If vertical scrollbar, swap x-y values.\n *\n * @return {Highcharts.SVGPathArray}\n * Rotated path.\n *\n * @requires modules/stock\n */\n Scrollbar.swapXY = function (path, vertical) {\n if (vertical) {\n path.forEach(function (seg) {\n var len = seg.length;\n var temp;\n for (var i = 0; i < len; i += 2) {\n temp = seg[i + 1];\n if (typeof temp === 'number') {\n seg[i + 1] = seg[i + 2];\n seg[i + 2] = temp;\n }\n }\n });\n }\n return path;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set up the mouse and touch events for the Scrollbar\n *\n * @private\n * @function Highcharts.Scrollbar#addEvents\n */\n Scrollbar.prototype.addEvents = function () {\n var buttonsOrder = this.options.inverted ? [1, 0] : [0, 1],\n buttons = this.scrollbarButtons,\n bar = this.scrollbarGroup.element,\n track = this.track.element,\n mouseDownHandler = this.mouseDownHandler.bind(this),\n mouseMoveHandler = this.mouseMoveHandler.bind(this),\n mouseUpHandler = this.mouseUpHandler.bind(this);\n // Mouse events\n var _events = [\n [\n buttons[buttonsOrder[0]].element,\n 'click',\n this.buttonToMinClick.bind(this)\n ],\n [\n buttons[buttonsOrder[1]].element,\n 'click',\n this.buttonToMaxClick.bind(this)\n ],\n [track, 'click',\n this.trackClick.bind(this)],\n [bar, 'mousedown',\n mouseDownHandler],\n [bar.ownerDocument, 'mousemove',\n mouseMoveHandler],\n [bar.ownerDocument, 'mouseup',\n mouseUpHandler]\n ];\n // Touch events\n if (H.hasTouch) {\n _events.push([bar, 'touchstart', mouseDownHandler], [bar.ownerDocument, 'touchmove', mouseMoveHandler], [bar.ownerDocument, 'touchend', mouseUpHandler]);\n }\n // Add them all\n _events.forEach(function (args) {\n addEvent.apply(null, args);\n });\n this._events = _events;\n };\n Scrollbar.prototype.buttonToMaxClick = function (e) {\n var scroller = this;\n var range = ((scroller.to - scroller.from) *\n pick(scroller.options.step, 0.2));\n scroller.updatePosition(scroller.from + range, scroller.to + range);\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMEvent: e\n });\n };\n Scrollbar.prototype.buttonToMinClick = function (e) {\n var scroller = this;\n var range = correctFloat(scroller.to - scroller.from) *\n pick(scroller.options.step, 0.2);\n scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMEvent: e\n });\n };\n /**\n * Get normalized (0-1) cursor position over the scrollbar\n *\n * @private\n * @function Highcharts.Scrollbar#cursorToScrollbarPosition\n *\n * @param {*} normalizedEvent\n * normalized event, with chartX and chartY values\n *\n * @return {Highcharts.Dictionary}\n * Local position {chartX, chartY}\n */\n Scrollbar.prototype.cursorToScrollbarPosition = function (normalizedEvent) {\n var scroller = this,\n options = scroller.options,\n minWidthDifference = options.minWidth > scroller.calculatedWidth ?\n options.minWidth :\n 0; // minWidth distorts translation\n return {\n chartX: (normalizedEvent.chartX - scroller.x -\n scroller.xOffset) /\n (scroller.barWidth - minWidthDifference),\n chartY: (normalizedEvent.chartY - scroller.y -\n scroller.yOffset) /\n (scroller.barWidth - minWidthDifference)\n };\n };\n /**\n * Destroys allocated elements.\n *\n * @private\n * @function Highcharts.Scrollbar#destroy\n */\n Scrollbar.prototype.destroy = function () {\n var scroller = this,\n navigator = scroller.chart.scroller;\n // Disconnect events added in addEvents\n scroller.removeEvents();\n // Destroy properties\n [\n 'track',\n 'scrollbarRifles',\n 'scrollbar',\n 'scrollbarGroup',\n 'group'\n ].forEach(function (prop) {\n if (scroller[prop] && scroller[prop].destroy) {\n scroller[prop] = scroller[prop].destroy();\n }\n });\n // #6421, chart may have more scrollbars\n if (navigator && scroller === navigator.scrollbar) {\n navigator.scrollbar = null;\n // Destroy elements in collection\n destroyObjectProperties(navigator.scrollbarButtons);\n }\n };\n /**\n * Draw the scrollbar buttons with arrows\n *\n * @private\n * @function Highcharts.Scrollbar#drawScrollbarButton\n * @param {number} index\n * 0 is left, 1 is right\n */\n Scrollbar.prototype.drawScrollbarButton = function (index) {\n var scroller = this,\n renderer = scroller.renderer,\n scrollbarButtons = scroller.scrollbarButtons,\n options = scroller.options,\n size = scroller.size,\n group = renderer.g().add(scroller.group);\n var tempElem;\n scrollbarButtons.push(group);\n // Create a rectangle for the scrollbar button\n tempElem = renderer.rect()\n .addClass('highcharts-scrollbar-button')\n .add(group);\n // Presentational attributes\n if (!scroller.chart.styledMode) {\n tempElem.attr({\n stroke: options.buttonBorderColor,\n 'stroke-width': options.buttonBorderWidth,\n fill: options.buttonBackgroundColor\n });\n }\n // Place the rectangle based on the rendered stroke width\n tempElem.attr(tempElem.crisp({\n x: -0.5,\n y: -0.5,\n width: size + 1,\n height: size + 1,\n r: options.buttonBorderRadius\n }, tempElem.strokeWidth()));\n // Button arrow\n tempElem = renderer\n .path(Scrollbar.swapXY([[\n 'M',\n size / 2 + (index ? -1 : 1),\n size / 2 - 3\n ], [\n 'L',\n size / 2 + (index ? -1 : 1),\n size / 2 + 3\n ], [\n 'L',\n size / 2 + (index ? 2 : -2),\n size / 2\n ]], options.vertical))\n .addClass('highcharts-scrollbar-arrow')\n .add(scrollbarButtons[index]);\n if (!scroller.chart.styledMode) {\n tempElem.attr({\n fill: options.buttonArrowColor\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Scrollbar#init\n * @param {Highcharts.SVGRenderer} renderer\n * @param {Highcharts.ScrollbarOptions} options\n * @param {Highcharts.Chart} chart\n */\n Scrollbar.prototype.init = function (renderer, options, chart) {\n var scroller = this;\n scroller.scrollbarButtons = [];\n scroller.renderer = renderer;\n scroller.userOptions = options;\n scroller.options = merge(ScrollbarDefaults, defaultOptions.scrollbar, options);\n scroller.chart = chart;\n // backward compatibility\n scroller.size = pick(scroller.options.size, scroller.options.height);\n // Init\n if (options.enabled) {\n scroller.render();\n scroller.addEvents();\n }\n };\n Scrollbar.prototype.mouseDownHandler = function (e) {\n var scroller = this,\n normalizedEvent = scroller.chart.pointer.normalize(e),\n mousePosition = scroller.cursorToScrollbarPosition(normalizedEvent);\n scroller.chartX = mousePosition.chartX;\n scroller.chartY = mousePosition.chartY;\n scroller.initPositions = [scroller.from, scroller.to];\n scroller.grabbedCenter = true;\n };\n /**\n * Event handler for the mouse move event.\n * @private\n */\n Scrollbar.prototype.mouseMoveHandler = function (e) {\n var scroller = this,\n normalizedEvent = scroller.chart.pointer.normalize(e),\n options = scroller.options,\n direction = options.vertical ?\n 'chartY' : 'chartX',\n initPositions = scroller.initPositions || [];\n var scrollPosition,\n chartPosition,\n change;\n // In iOS, a mousemove event with e.pageX === 0 is fired when\n // holding the finger down in the center of the scrollbar. This\n // should be ignored.\n if (scroller.grabbedCenter &&\n // #4696, scrollbar failed on Android\n (!e.touches || e.touches[0][direction] !== 0)) {\n chartPosition = scroller.cursorToScrollbarPosition(normalizedEvent)[direction];\n scrollPosition = scroller[direction];\n change = chartPosition - scrollPosition;\n scroller.hasDragged = true;\n scroller.updatePosition(initPositions[0] + change, initPositions[1] + change);\n if (scroller.hasDragged) {\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMType: e.type,\n DOMEvent: e\n });\n }\n }\n };\n /**\n * Event handler for the mouse up event.\n * @private\n */\n Scrollbar.prototype.mouseUpHandler = function (e) {\n var scroller = this;\n if (scroller.hasDragged) {\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMType: e.type,\n DOMEvent: e\n });\n }\n scroller.grabbedCenter =\n scroller.hasDragged =\n scroller.chartX =\n scroller.chartY = null;\n };\n /**\n * Position the scrollbar, method called from a parent with defined\n * dimensions.\n *\n * @private\n * @function Highcharts.Scrollbar#position\n * @param {number} x\n * x-position on the chart\n * @param {number} y\n * y-position on the chart\n * @param {number} width\n * width of the scrollbar\n * @param {number} height\n * height of the scorllbar\n */\n Scrollbar.prototype.position = function (x, y, width, height) {\n var scroller = this,\n options = scroller.options,\n vertical = options.vertical,\n method = scroller.rendered ? 'animate' : 'attr';\n var xOffset = height,\n yOffset = 0;\n // Make the scrollbar visible when it is repositioned, #15763.\n scroller.group.show();\n scroller.x = x;\n scroller.y = y + this.trackBorderWidth;\n scroller.width = width; // width with buttons\n scroller.height = height;\n scroller.xOffset = xOffset;\n scroller.yOffset = yOffset;\n // If Scrollbar is a vertical type, swap options:\n if (vertical) {\n scroller.width = scroller.yOffset = width = yOffset = scroller.size;\n scroller.xOffset = xOffset = 0;\n scroller.barWidth = height - width * 2; // width without buttons\n scroller.x = x = x + scroller.options.margin;\n }\n else {\n scroller.height = scroller.xOffset = height = xOffset =\n scroller.size;\n scroller.barWidth = width - height * 2; // width without buttons\n scroller.y = scroller.y + scroller.options.margin;\n }\n // Set general position for a group:\n scroller.group[method]({\n translateX: x,\n translateY: scroller.y\n });\n // Resize background/track:\n scroller.track[method]({\n width: width,\n height: height\n });\n // Move right/bottom button ot it's place:\n scroller.scrollbarButtons[1][method]({\n translateX: vertical ? 0 : width - xOffset,\n translateY: vertical ? height - yOffset : 0\n });\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n *\n * @private\n * @function Highcharts.Scrollbar#removeEvents\n */\n Scrollbar.prototype.removeEvents = function () {\n this._events.forEach(function (args) {\n removeEvent.apply(null, args);\n });\n this._events.length = 0;\n };\n /**\n * Render scrollbar with all required items.\n *\n * @private\n * @function Highcharts.Scrollbar#render\n */\n Scrollbar.prototype.render = function () {\n var scroller = this,\n renderer = scroller.renderer,\n options = scroller.options,\n size = scroller.size,\n styledMode = scroller.chart.styledMode,\n group = renderer.g('scrollbar')\n .attr({\n zIndex: options.zIndex\n })\n .hide() // initially hide the scrollbar #15863\n .add();\n // Draw the scrollbar group\n scroller.group = group;\n // Draw the scrollbar track:\n scroller.track = renderer.rect()\n .addClass('highcharts-scrollbar-track')\n .attr({\n x: 0,\n r: options.trackBorderRadius || 0,\n height: size,\n width: size\n }).add(group);\n if (!styledMode) {\n scroller.track.attr({\n fill: options.trackBackgroundColor,\n stroke: options.trackBorderColor,\n 'stroke-width': options.trackBorderWidth\n });\n }\n scroller.trackBorderWidth = scroller.track.strokeWidth();\n scroller.track.attr({\n y: -this.trackBorderWidth % 2 / 2\n });\n // Draw the scrollbar itself\n scroller.scrollbarGroup = renderer.g().add(group);\n scroller.scrollbar = renderer.rect()\n .addClass('highcharts-scrollbar-thumb')\n .attr({\n height: size,\n width: size,\n r: options.barBorderRadius || 0\n }).add(scroller.scrollbarGroup);\n scroller.scrollbarRifles = renderer\n .path(Scrollbar.swapXY([\n ['M', -3, size / 4],\n ['L', -3, 2 * size / 3],\n ['M', 0, size / 4],\n ['L', 0, 2 * size / 3],\n ['M', 3, size / 4],\n ['L', 3, 2 * size / 3]\n ], options.vertical))\n .addClass('highcharts-scrollbar-rifles')\n .add(scroller.scrollbarGroup);\n if (!styledMode) {\n scroller.scrollbar.attr({\n fill: options.barBackgroundColor,\n stroke: options.barBorderColor,\n 'stroke-width': options.barBorderWidth\n });\n scroller.scrollbarRifles.attr({\n stroke: options.rifleColor,\n 'stroke-width': 1\n });\n }\n scroller.scrollbarStrokeWidth = scroller.scrollbar.strokeWidth();\n scroller.scrollbarGroup.translate(-scroller.scrollbarStrokeWidth % 2 / 2, -scroller.scrollbarStrokeWidth % 2 / 2);\n // Draw the buttons:\n scroller.drawScrollbarButton(0);\n scroller.drawScrollbarButton(1);\n };\n /**\n * Set scrollbar size, with a given scale.\n *\n * @private\n * @function Highcharts.Scrollbar#setRange\n * @param {number} from\n * scale (0-1) where bar should start\n * @param {number} to\n * scale (0-1) where bar should end\n */\n Scrollbar.prototype.setRange = function (from, to) {\n var scroller = this,\n options = scroller.options,\n vertical = options.vertical,\n minWidth = options.minWidth,\n fullWidth = scroller.barWidth,\n method = (this.rendered &&\n !this.hasDragged &&\n !(this.chart.navigator && this.chart.navigator.hasDragged)) ? 'animate' : 'attr';\n if (!defined(fullWidth)) {\n return;\n }\n var toPX = fullWidth * Math.min(to, 1);\n var fromPX,\n newSize;\n from = Math.max(from, 0);\n fromPX = Math.ceil(fullWidth * from);\n scroller.calculatedWidth = newSize = correctFloat(toPX - fromPX);\n // We need to recalculate position, if minWidth is used\n if (newSize < minWidth) {\n fromPX = (fullWidth - minWidth + newSize) * from;\n newSize = minWidth;\n }\n var newPos = Math.floor(fromPX + scroller.xOffset + scroller.yOffset);\n var newRiflesPos = newSize / 2 - 0.5; // -0.5 -> rifle line width / 2\n // Store current position:\n scroller.from = from;\n scroller.to = to;\n if (!vertical) {\n scroller.scrollbarGroup[method]({\n translateX: newPos\n });\n scroller.scrollbar[method]({\n width: newSize\n });\n scroller.scrollbarRifles[method]({\n translateX: newRiflesPos\n });\n scroller.scrollbarLeft = newPos;\n scroller.scrollbarTop = 0;\n }\n else {\n scroller.scrollbarGroup[method]({\n translateY: newPos\n });\n scroller.scrollbar[method]({\n height: newSize\n });\n scroller.scrollbarRifles[method]({\n translateY: newRiflesPos\n });\n scroller.scrollbarTop = newPos;\n scroller.scrollbarLeft = 0;\n }\n if (newSize <= 12) {\n scroller.scrollbarRifles.hide();\n }\n else {\n scroller.scrollbarRifles.show();\n }\n // Show or hide the scrollbar based on the showFull setting\n if (options.showFull === false) {\n if (from <= 0 && to >= 1) {\n scroller.group.hide();\n }\n else {\n scroller.group.show();\n }\n }\n scroller.rendered = true;\n };\n /**\n * Checks if the extremes should be updated in response to a scrollbar\n * change event.\n *\n * @private\n * @function Highcharts.Scrollbar#shouldUpdateExtremes\n */\n Scrollbar.prototype.shouldUpdateExtremes = function (eventType) {\n return (pick(this.options.liveRedraw, H.svg &&\n !H.isTouchDevice &&\n !this.chart.boosted) ||\n // Mouseup always should change extremes\n eventType === 'mouseup' ||\n eventType === 'touchend' ||\n // Internal events\n !defined(eventType));\n };\n Scrollbar.prototype.trackClick = function (e) {\n var scroller = this;\n var normalizedEvent = scroller.chart.pointer.normalize(e),\n range = scroller.to - scroller.from,\n top = scroller.y + scroller.scrollbarTop,\n left = scroller.x + scroller.scrollbarLeft;\n if ((scroller.options.vertical && normalizedEvent.chartY > top) ||\n (!scroller.options.vertical && normalizedEvent.chartX > left)) {\n // On the top or on the left side of the track:\n scroller.updatePosition(scroller.from + range, scroller.to + range);\n }\n else {\n // On the bottom or the right side of the track:\n scroller.updatePosition(scroller.from - range, scroller.to - range);\n }\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMEvent: e\n });\n };\n /**\n * Update the scrollbar with new options\n *\n * @private\n * @function Highcharts.Scrollbar#update\n * @param {Highcharts.ScrollbarOptions} options\n */\n Scrollbar.prototype.update = function (options) {\n this.destroy();\n this.init(this.chart.renderer, merge(true, this.options, options), this.chart);\n };\n /**\n * Update position option in the Scrollbar, with normalized 0-1 scale\n *\n * @private\n * @function Highcharts.Scrollbar#updatePosition\n * @param {number} from\n * @param {number} to\n */\n Scrollbar.prototype.updatePosition = function (from, to) {\n if (to > 1) {\n from = correctFloat(1 - correctFloat(to - from));\n to = 1;\n }\n if (from < 0) {\n to = correctFloat(to - from);\n from = 0;\n }\n this.from = from;\n this.to = to;\n };\n /* *\n *\n * Static Properties\n *\n * */\n Scrollbar.defaultOptions = ScrollbarDefaults;\n return Scrollbar;\n }());\n /* *\n *\n * Registry\n *\n * */\n defaultOptions.scrollbar = merge(true, Scrollbar.defaultOptions, defaultOptions.scrollbar);\n /* *\n *\n * Default Export\n *\n * */\n\n return Scrollbar;\n });\n _registerModule(_modules, 'Stock/Navigator/Navigator.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Defaults.js'], _modules['Core/Globals.js'], _modules['Core/Axis/NavigatorAxisComposition.js'], _modules['Stock/Navigator/NavigatorComposition.js'], _modules['Stock/Scrollbar/Scrollbar.js'], _modules['Core/Utilities.js']], function (Axis, D, H, NavigatorAxisAdditions, NavigatorComposition, Scrollbar, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var hasTouch = H.hasTouch,\n isTouchDevice = H.isTouchDevice;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n extend = U.extend,\n find = U.find,\n isArray = U.isArray,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent,\n splat = U.splat;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Finding the min or max of a set of variables where we don't know if they are\n * defined, is a pattern that is repeated several places in Highcharts. Consider\n * making this a global utility method.\n * @private\n */\n function numExt(extreme) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var numbers = [].filter.call(args,\n isNumber);\n if (numbers.length) {\n return Math[extreme].apply(0, numbers);\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * The Navigator class\n *\n * @private\n * @class\n * @name Highcharts.Navigator\n *\n * @param {Highcharts.Chart} chart\n * Chart object\n */\n var Navigator = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Navigator(chart) {\n /* *\n *\n * Properties\n *\n * */\n this.baseSeries = void 0;\n this.chart = void 0;\n this.handles = void 0;\n this.height = void 0;\n this.left = void 0;\n this.navigatorEnabled = void 0;\n this.navigatorGroup = void 0;\n this.navigatorOptions = void 0;\n this.navigatorSeries = void 0;\n this.navigatorSize = void 0;\n this.opposite = void 0;\n this.outline = void 0;\n this.outlineHeight = void 0;\n this.range = void 0;\n this.rendered = void 0;\n this.shades = void 0;\n this.size = void 0;\n this.top = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.zoomedMax = void 0;\n this.zoomedMin = void 0;\n this.init(chart);\n }\n /* *\n *\n * Static Functions\n *\n * */\n Navigator.compose = function (AxisClass, ChartClass, SeriesClass) {\n NavigatorComposition.compose(AxisClass, ChartClass, Navigator, SeriesClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draw one of the handles on the side of the zoomed range in the navigator.\n *\n * @private\n * @function Highcharts.Navigator#drawHandle\n *\n * @param {number} x\n * The x center for the handle\n *\n * @param {number} index\n * 0 for left and 1 for right\n *\n * @param {boolean|undefined} inverted\n * Flag for chart.inverted\n *\n * @param {string} verb\n * Use 'animate' or 'attr'\n */\n Navigator.prototype.drawHandle = function (x, index, inverted, verb) {\n var navigator = this,\n height = navigator.navigatorOptions.handles.height;\n // Place it\n navigator.handles[index][verb](inverted ? {\n translateX: Math.round(navigator.left + navigator.height / 2),\n translateY: Math.round(navigator.top + parseInt(x, 10) + 0.5 - height)\n } : {\n translateX: Math.round(navigator.left + parseInt(x, 10)),\n translateY: Math.round(navigator.top + navigator.height / 2 - height / 2 - 1)\n });\n };\n /**\n * Render outline around the zoomed range\n *\n * @private\n * @function Highcharts.Navigator#drawOutline\n *\n * @param {number} zoomedMin\n * in pixels position where zoomed range starts\n *\n * @param {number} zoomedMax\n * in pixels position where zoomed range ends\n *\n * @param {boolean|undefined} inverted\n * flag if chart is inverted\n *\n * @param {string} verb\n * use 'animate' or 'attr'\n */\n Navigator.prototype.drawOutline = function (zoomedMin, zoomedMax, inverted, verb) {\n var navigator = this,\n maskInside = navigator.navigatorOptions.maskInside,\n outlineWidth = navigator.outline.strokeWidth(),\n halfOutline = outlineWidth / 2,\n outlineCorrection = (outlineWidth % 2) / 2, // #5800\n outlineHeight = navigator.outlineHeight,\n scrollbarHeight = navigator.scrollbarHeight || 0,\n navigatorSize = navigator.size;\n var left = navigator.left - scrollbarHeight,\n navigatorTop = navigator.top,\n verticalMin,\n path;\n if (inverted) {\n left -= halfOutline;\n verticalMin = navigatorTop + zoomedMax + outlineCorrection;\n zoomedMax = navigatorTop + zoomedMin + outlineCorrection;\n path = [\n [\n 'M',\n left + outlineHeight,\n navigatorTop - scrollbarHeight - outlineCorrection\n ],\n // top right of zoomed range\n ['L', left + outlineHeight, verticalMin],\n ['L', left, verticalMin],\n ['L', left, zoomedMax],\n ['L', left + outlineHeight, zoomedMax],\n [\n 'L',\n left + outlineHeight,\n navigatorTop + navigatorSize + scrollbarHeight\n ]\n ];\n if (maskInside) {\n path.push(\n // upper left of zoomed range\n ['M', left + outlineHeight, verticalMin - halfOutline], \n // upper right of z.r.\n [\n 'L',\n left + outlineHeight,\n zoomedMax + halfOutline\n ]);\n }\n }\n else {\n zoomedMin += left + scrollbarHeight - outlineCorrection;\n zoomedMax += left + scrollbarHeight - outlineCorrection;\n navigatorTop += halfOutline;\n path = [\n // left\n ['M', left, navigatorTop],\n // upper left of zoomed range\n ['L', zoomedMin, navigatorTop],\n // lower left of z.r.\n ['L', zoomedMin, navigatorTop + outlineHeight],\n // lower right of z.r.\n ['L', zoomedMax, navigatorTop + outlineHeight],\n // upper right of z.r.\n ['L', zoomedMax, navigatorTop],\n // right\n ['L', left + navigatorSize + scrollbarHeight * 2, navigatorTop]\n ];\n if (maskInside) {\n path.push(\n // upper left of zoomed range\n ['M', zoomedMin - halfOutline, navigatorTop], \n // upper right of z.r.\n ['L', zoomedMax + halfOutline, navigatorTop]);\n }\n }\n navigator.outline[verb]({\n d: path\n });\n };\n /**\n * Render outline around the zoomed range\n *\n * @private\n * @function Highcharts.Navigator#drawMasks\n *\n * @param {number} zoomedMin\n * in pixels position where zoomed range starts\n *\n * @param {number} zoomedMax\n * in pixels position where zoomed range ends\n *\n * @param {boolean|undefined} inverted\n * flag if chart is inverted\n *\n * @param {string} verb\n * use 'animate' or 'attr'\n */\n Navigator.prototype.drawMasks = function (zoomedMin, zoomedMax, inverted, verb) {\n var navigator = this,\n left = navigator.left,\n top = navigator.top,\n navigatorHeight = navigator.height;\n var height,\n width,\n x,\n y;\n // Determine rectangle position & size\n // According to (non)inverted position:\n if (inverted) {\n x = [left, left, left];\n y = [top, top + zoomedMin, top + zoomedMax];\n width = [navigatorHeight, navigatorHeight, navigatorHeight];\n height = [\n zoomedMin,\n zoomedMax - zoomedMin,\n navigator.size - zoomedMax\n ];\n }\n else {\n x = [left, left + zoomedMin, left + zoomedMax];\n y = [top, top, top];\n width = [\n zoomedMin,\n zoomedMax - zoomedMin,\n navigator.size - zoomedMax\n ];\n height = [navigatorHeight, navigatorHeight, navigatorHeight];\n }\n navigator.shades.forEach(function (shade, i) {\n shade[verb]({\n x: x[i],\n y: y[i],\n width: width[i],\n height: height[i]\n });\n });\n };\n /**\n * Generate DOM elements for a navigator:\n *\n * - main navigator group\n *\n * - all shades\n *\n * - outline\n *\n * - handles\n *\n * @private\n * @function Highcharts.Navigator#renderElements\n */\n Navigator.prototype.renderElements = function () {\n var navigator = this,\n navigatorOptions = navigator.navigatorOptions,\n maskInside = navigatorOptions.maskInside,\n chart = navigator.chart,\n inverted = chart.inverted,\n renderer = chart.renderer,\n mouseCursor = {\n cursor: inverted ? 'ns-resize' : 'ew-resize'\n }, \n // Create the main navigator group\n navigatorGroup = navigator.navigatorGroup = renderer\n .g('navigator')\n .attr({\n zIndex: 8,\n visibility: 'hidden'\n })\n .add();\n // Create masks, each mask will get events and fill:\n [\n !maskInside,\n maskInside,\n !maskInside\n ].forEach(function (hasMask, index) {\n var shade = renderer.rect()\n .addClass('highcharts-navigator-mask' +\n (index === 1 ? '-inside' : '-outside'))\n .add(navigatorGroup);\n if (!chart.styledMode) {\n shade.attr({\n fill: hasMask ?\n navigatorOptions.maskFill :\n 'rgba(0,0,0,0)'\n });\n if (index === 1) {\n shade.css(mouseCursor);\n }\n }\n navigator.shades[index] = shade;\n });\n // Create the outline:\n navigator.outline = renderer.path()\n .addClass('highcharts-navigator-outline')\n .add(navigatorGroup);\n if (!chart.styledMode) {\n navigator.outline.attr({\n 'stroke-width': navigatorOptions.outlineWidth,\n stroke: navigatorOptions.outlineColor\n });\n }\n // Create the handlers:\n if (navigatorOptions.handles && navigatorOptions.handles.enabled) {\n var handlesOptions_1 = navigatorOptions.handles,\n height_1 = handlesOptions_1.height,\n width_1 = handlesOptions_1.width;\n [0, 1].forEach(function (index) {\n navigator.handles[index] = renderer.symbol(handlesOptions_1.symbols[index], -width_1 / 2 - 1, 0, width_1, height_1, handlesOptions_1);\n if (chart.inverted) {\n navigator.handles[index].attr({\n rotation: 90,\n rotationOriginX: Math.floor(-width_1 / 2),\n rotationOriginY: (height_1 + width_1) / 2\n });\n }\n // zIndex = 6 for right handle, 7 for left.\n // Can't be 10, because of the tooltip in inverted chart #2908\n navigator.handles[index].attr({ zIndex: 7 - index })\n .addClass('highcharts-navigator-handle ' +\n 'highcharts-navigator-handle-' +\n ['left', 'right'][index]).add(navigatorGroup);\n if (!chart.styledMode) {\n navigator.handles[index]\n .attr({\n fill: handlesOptions_1.backgroundColor,\n stroke: handlesOptions_1.borderColor,\n 'stroke-width': handlesOptions_1.lineWidth\n })\n .css(mouseCursor);\n }\n });\n }\n };\n /**\n * Update navigator\n *\n * @private\n * @function Highcharts.Navigator#update\n *\n * @param {Highcharts.NavigatorOptions} options\n * Options to merge in when updating navigator\n */\n Navigator.prototype.update = function (options) {\n // Remove references to old navigator series in base series\n (this.series || []).forEach(function (series) {\n if (series.baseSeries) {\n delete series.baseSeries.navigatorSeries;\n }\n });\n // Destroy and rebuild navigator\n this.destroy();\n var chartOptions = this.chart.options;\n merge(true, chartOptions.navigator, options);\n this.init(this.chart);\n };\n /**\n * Render the navigator\n *\n * @private\n * @function Highcharts.Navigator#render\n * @param {number} min\n * X axis value minimum\n * @param {number} max\n * X axis value maximum\n * @param {number} [pxMin]\n * Pixel value minimum\n * @param {number} [pxMax]\n * Pixel value maximum\n */\n Navigator.prototype.render = function (min, max, pxMin, pxMax) {\n var navigator = this,\n chart = navigator.chart,\n xAxis = navigator.xAxis,\n pointRange = xAxis.pointRange || 0,\n scrollbarXAxis = xAxis.navigatorAxis.fake ? chart.xAxis[0] : xAxis,\n navigatorEnabled = navigator.navigatorEnabled,\n rendered = navigator.rendered,\n inverted = chart.inverted,\n minRange = chart.xAxis[0].minRange,\n maxRange = chart.xAxis[0].options.maxRange;\n var navigatorWidth,\n scrollbarLeft,\n scrollbarTop,\n scrollbarHeight = navigator.scrollbarHeight,\n navigatorSize,\n verb;\n // Don't redraw while moving the handles (#4703).\n if (this.hasDragged && !defined(pxMin)) {\n return;\n }\n min = correctFloat(min - pointRange / 2);\n max = correctFloat(max + pointRange / 2);\n // Don't render the navigator until we have data (#486, #4202, #5172).\n if (!isNumber(min) || !isNumber(max)) {\n // However, if navigator was already rendered, we may need to resize\n // it. For example hidden series, but visible navigator (#6022).\n if (rendered) {\n pxMin = 0;\n pxMax = pick(xAxis.width, scrollbarXAxis.width);\n }\n else {\n return;\n }\n }\n navigator.left = pick(xAxis.left, \n // in case of scrollbar only, without navigator\n chart.plotLeft + scrollbarHeight +\n (inverted ? chart.plotWidth : 0));\n var zoomedMax = navigator.size = navigatorSize = pick(xAxis.len, (inverted ? chart.plotHeight : chart.plotWidth) -\n 2 * scrollbarHeight);\n if (inverted) {\n navigatorWidth = scrollbarHeight;\n }\n else {\n navigatorWidth = navigatorSize + 2 * scrollbarHeight;\n }\n // Get the pixel position of the handles\n pxMin = pick(pxMin, xAxis.toPixels(min, true));\n pxMax = pick(pxMax, xAxis.toPixels(max, true));\n // Verify (#1851, #2238)\n if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) {\n pxMin = 0;\n pxMax = navigatorWidth;\n }\n // Are we below the minRange? (#2618, #6191)\n var newMin = xAxis.toValue(pxMin,\n true),\n newMax = xAxis.toValue(pxMax,\n true),\n currentRange = Math.abs(correctFloat(newMax - newMin));\n if (currentRange < minRange) {\n if (this.grabbedLeft) {\n pxMin = xAxis.toPixels(newMax - minRange - pointRange, true);\n }\n else if (this.grabbedRight) {\n pxMax = xAxis.toPixels(newMin + minRange + pointRange, true);\n }\n }\n else if (defined(maxRange) &&\n correctFloat(currentRange - pointRange) > maxRange) {\n if (this.grabbedLeft) {\n pxMin = xAxis.toPixels(newMax - maxRange - pointRange, true);\n }\n else if (this.grabbedRight) {\n pxMax = xAxis.toPixels(newMin + maxRange + pointRange, true);\n }\n }\n // Handles are allowed to cross, but never exceed the plot area\n navigator.zoomedMax = clamp(Math.max(pxMin, pxMax), 0, zoomedMax);\n navigator.zoomedMin = clamp(navigator.fixedWidth ?\n navigator.zoomedMax - navigator.fixedWidth :\n Math.min(pxMin, pxMax), 0, zoomedMax);\n navigator.range = navigator.zoomedMax - navigator.zoomedMin;\n zoomedMax = Math.round(navigator.zoomedMax);\n var zoomedMin = Math.round(navigator.zoomedMin);\n if (navigatorEnabled) {\n navigator.navigatorGroup.attr({\n visibility: 'inherit'\n });\n // Place elements\n verb = rendered && !navigator.hasDragged ? 'animate' : 'attr';\n navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n if (navigator.navigatorOptions.handles.enabled) {\n navigator.drawHandle(zoomedMin, 0, inverted, verb);\n navigator.drawHandle(zoomedMax, 1, inverted, verb);\n }\n }\n if (navigator.scrollbar) {\n if (inverted) {\n scrollbarTop = navigator.top - scrollbarHeight;\n scrollbarLeft = navigator.left - scrollbarHeight +\n (navigatorEnabled || !scrollbarXAxis.opposite ? 0 :\n // Multiple axes has offsets:\n (scrollbarXAxis.titleOffset || 0) +\n // Self margin from the axis.title\n scrollbarXAxis.axisTitleMargin);\n scrollbarHeight = navigatorSize + 2 * scrollbarHeight;\n }\n else {\n scrollbarTop = navigator.top + (navigatorEnabled ?\n navigator.height :\n -scrollbarHeight);\n scrollbarLeft = navigator.left - scrollbarHeight;\n }\n // Reposition scrollbar\n navigator.scrollbar.position(scrollbarLeft, scrollbarTop, navigatorWidth, scrollbarHeight);\n // Keep scale 0-1\n navigator.scrollbar.setRange(\n // Use real value, not rounded because range can be very small\n // (#1716)\n navigator.zoomedMin / (navigatorSize || 1), navigator.zoomedMax / (navigatorSize || 1));\n }\n navigator.rendered = true;\n };\n /**\n * Set up the mouse and touch events for the navigator\n *\n * @private\n * @function Highcharts.Navigator#addMouseEvents\n */\n Navigator.prototype.addMouseEvents = function () {\n var navigator = this,\n chart = navigator.chart,\n container = chart.container;\n var eventsToUnbind = [],\n mouseMoveHandler,\n mouseUpHandler;\n /**\n * Create mouse events' handlers.\n * Make them as separate functions to enable wrapping them:\n */\n navigator.mouseMoveHandler = mouseMoveHandler = function (e) {\n navigator.onMouseMove(e);\n };\n navigator.mouseUpHandler = mouseUpHandler = function (e) {\n navigator.onMouseUp(e);\n };\n // Add shades and handles mousedown events\n eventsToUnbind = navigator.getPartsEvents('mousedown');\n // Add mouse move and mouseup events. These are bind to doc/container,\n // because Navigator.grabbedSomething flags are stored in mousedown\n // events\n eventsToUnbind.push(addEvent(chart.renderTo, 'mousemove', mouseMoveHandler), addEvent(container.ownerDocument, 'mouseup', mouseUpHandler));\n // Touch events\n if (hasTouch) {\n eventsToUnbind.push(addEvent(chart.renderTo, 'touchmove', mouseMoveHandler), addEvent(container.ownerDocument, 'touchend', mouseUpHandler));\n eventsToUnbind.concat(navigator.getPartsEvents('touchstart'));\n }\n navigator.eventsToUnbind = eventsToUnbind;\n // Data events\n if (navigator.series && navigator.series[0]) {\n eventsToUnbind.push(addEvent(navigator.series[0].xAxis, 'foundExtremes', function () {\n chart.navigator.modifyNavigatorAxisExtremes();\n }));\n }\n };\n /**\n * Generate events for handles and masks\n *\n * @private\n * @function Highcharts.Navigator#getPartsEvents\n *\n * @param {string} eventName\n * Event name handler, 'mousedown' or 'touchstart'\n *\n * @return {Array}\n * An array of functions to remove navigator functions from the\n * events again.\n */\n Navigator.prototype.getPartsEvents = function (eventName) {\n var navigator = this,\n events = [];\n ['shades', 'handles'].forEach(function (name) {\n navigator[name].forEach(function (navigatorItem, index) {\n events.push(addEvent(navigatorItem.element, eventName, function (e) {\n navigator[name + 'Mousedown'](e, index);\n }));\n });\n });\n return events;\n };\n /**\n * Mousedown on a shaded mask, either:\n *\n * - will be stored for future drag&drop\n *\n * - will directly shift to a new range\n *\n * @private\n * @function Highcharts.Navigator#shadesMousedown\n *\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n *\n * @param {number} index\n * Index of a mask in Navigator.shades array\n */\n Navigator.prototype.shadesMousedown = function (e, index) {\n e = this.chart.pointer.normalize(e);\n var navigator = this,\n chart = navigator.chart,\n xAxis = navigator.xAxis,\n zoomedMin = navigator.zoomedMin,\n navigatorSize = navigator.size,\n range = navigator.range;\n var navigatorPosition = navigator.left,\n chartX = e.chartX,\n fixedMax,\n fixedMin,\n ext,\n left;\n // For inverted chart, swap some options:\n if (chart.inverted) {\n chartX = e.chartY;\n navigatorPosition = navigator.top;\n }\n if (index === 1) {\n // Store information for drag&drop\n navigator.grabbedCenter = chartX;\n navigator.fixedWidth = range;\n navigator.dragOffset = chartX - zoomedMin;\n }\n else {\n // Shift the range by clicking on shaded areas\n left = chartX - navigatorPosition - range / 2;\n if (index === 0) {\n left = Math.max(0, left);\n }\n else if (index === 2 && left + range >= navigatorSize) {\n left = navigatorSize - range;\n if (navigator.reversedExtremes) {\n // #7713\n left -= range;\n fixedMin = navigator.getUnionExtremes().dataMin;\n }\n else {\n // #2293, #3543\n fixedMax = navigator.getUnionExtremes().dataMax;\n }\n }\n if (left !== zoomedMin) { // it has actually moved\n navigator.fixedWidth = range; // #1370\n ext = xAxis.navigatorAxis.toFixedRange(left, left + range, fixedMin, fixedMax);\n if (defined(ext.min)) { // #7411\n chart.xAxis[0].setExtremes(Math.min(ext.min, ext.max), Math.max(ext.min, ext.max), true, null, // auto animation\n { trigger: 'navigator' });\n }\n }\n }\n };\n /**\n * Mousedown on a handle mask.\n * Will store necessary information for drag&drop.\n *\n * @private\n * @function Highcharts.Navigator#handlesMousedown\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n * @param {number} index\n * Index of a handle in Navigator.handles array\n */\n Navigator.prototype.handlesMousedown = function (e, index) {\n e = this.chart.pointer.normalize(e);\n var navigator = this,\n chart = navigator.chart,\n baseXAxis = chart.xAxis[0], \n // For reversed axes, min and max are changed,\n // so the other extreme should be stored\n reverse = navigator.reversedExtremes;\n if (index === 0) {\n // Grab the left handle\n navigator.grabbedLeft = true;\n navigator.otherHandlePos = navigator.zoomedMax;\n navigator.fixedExtreme = reverse ? baseXAxis.min : baseXAxis.max;\n }\n else {\n // Grab the right handle\n navigator.grabbedRight = true;\n navigator.otherHandlePos = navigator.zoomedMin;\n navigator.fixedExtreme = reverse ? baseXAxis.max : baseXAxis.min;\n }\n chart.fixedRange = null;\n };\n /**\n * Mouse move event based on x/y mouse position.\n *\n * @private\n * @function Highcharts.Navigator#onMouseMove\n *\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n */\n Navigator.prototype.onMouseMove = function (e) {\n var navigator = this,\n chart = navigator.chart,\n navigatorSize = navigator.navigatorSize,\n range = navigator.range,\n dragOffset = navigator.dragOffset,\n inverted = chart.inverted;\n var left = navigator.left,\n chartX;\n // In iOS, a mousemove event with e.pageX === 0 is fired when holding\n // the finger down in the center of the scrollbar. This should be\n // ignored.\n if (!e.touches || e.touches[0].pageX !== 0) { // #4696\n e = chart.pointer.normalize(e);\n chartX = e.chartX;\n // Swap some options for inverted chart\n if (inverted) {\n left = navigator.top;\n chartX = e.chartY;\n }\n // Drag left handle or top handle\n if (navigator.grabbedLeft) {\n navigator.hasDragged = true;\n navigator.render(0, 0, chartX - left, navigator.otherHandlePos);\n // Drag right handle or bottom handle\n }\n else if (navigator.grabbedRight) {\n navigator.hasDragged = true;\n navigator.render(0, 0, navigator.otherHandlePos, chartX - left);\n // Drag scrollbar or open area in navigator\n }\n else if (navigator.grabbedCenter) {\n navigator.hasDragged = true;\n if (chartX < dragOffset) { // outside left\n chartX = dragOffset;\n // outside right\n }\n else if (chartX >\n navigatorSize + dragOffset - range) {\n chartX = navigatorSize + dragOffset - range;\n }\n navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);\n }\n if (navigator.hasDragged &&\n navigator.scrollbar &&\n pick(navigator.scrollbar.options.liveRedraw, \n // By default, don't run live redraw on VML, on touch\n // devices or if the chart is in boost.\n H.svg &&\n !isTouchDevice &&\n !this.chart.boosted)) {\n e.DOMType = e.type; // DOMType is for IE8\n setTimeout(function () {\n navigator.onMouseUp(e);\n }, 0);\n }\n }\n };\n /**\n * Mouse up event based on x/y mouse position.\n *\n * @private\n * @function Highcharts.Navigator#onMouseUp\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n */\n Navigator.prototype.onMouseUp = function (e) {\n var navigator = this,\n chart = navigator.chart,\n xAxis = navigator.xAxis,\n scrollbar = navigator.scrollbar,\n DOMEvent = e.DOMEvent || e,\n inverted = chart.inverted,\n verb = navigator.rendered && !navigator.hasDragged ?\n 'animate' : 'attr';\n var zoomedMax,\n zoomedMin,\n unionExtremes,\n fixedMin,\n fixedMax,\n ext;\n if (\n // MouseUp is called for both, navigator and scrollbar (that order),\n // which causes calling afterSetExtremes twice. Prevent first call\n // by checking if scrollbar is going to set new extremes (#6334)\n (navigator.hasDragged && (!scrollbar || !scrollbar.hasDragged)) ||\n e.trigger === 'scrollbar') {\n unionExtremes = navigator.getUnionExtremes();\n // When dragging one handle, make sure the other one doesn't change\n if (navigator.zoomedMin === navigator.otherHandlePos) {\n fixedMin = navigator.fixedExtreme;\n }\n else if (navigator.zoomedMax === navigator.otherHandlePos) {\n fixedMax = navigator.fixedExtreme;\n }\n // Snap to right edge (#4076)\n if (navigator.zoomedMax === navigator.size) {\n fixedMax = navigator.reversedExtremes ?\n unionExtremes.dataMin :\n unionExtremes.dataMax;\n }\n // Snap to left edge (#7576)\n if (navigator.zoomedMin === 0) {\n fixedMin = navigator.reversedExtremes ?\n unionExtremes.dataMax :\n unionExtremes.dataMin;\n }\n ext = xAxis.navigatorAxis.toFixedRange(navigator.zoomedMin, navigator.zoomedMax, fixedMin, fixedMax);\n if (defined(ext.min)) {\n chart.xAxis[0].setExtremes(Math.min(ext.min, ext.max), Math.max(ext.min, ext.max), true, \n // Run animation when clicking buttons, scrollbar track etc,\n // but not when dragging handles or scrollbar\n navigator.hasDragged ? false : null, {\n trigger: 'navigator',\n triggerOp: 'navigator-drag',\n DOMEvent: DOMEvent // #1838\n });\n }\n }\n if (e.DOMType !== 'mousemove' &&\n e.DOMType !== 'touchmove') {\n navigator.grabbedLeft = navigator.grabbedRight =\n navigator.grabbedCenter = navigator.fixedWidth =\n navigator.fixedExtreme = navigator.otherHandlePos =\n navigator.hasDragged = navigator.dragOffset = null;\n }\n // Update position of navigator shades, outline and handles (#12573)\n if (navigator.navigatorEnabled &&\n isNumber(navigator.zoomedMin) &&\n isNumber(navigator.zoomedMax)) {\n zoomedMin = Math.round(navigator.zoomedMin);\n zoomedMax = Math.round(navigator.zoomedMax);\n if (navigator.shades) {\n navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n }\n if (navigator.outline) {\n navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n }\n if (navigator.navigatorOptions.handles.enabled &&\n Object.keys(navigator.handles).length ===\n navigator.handles.length) {\n navigator.drawHandle(zoomedMin, 0, inverted, verb);\n navigator.drawHandle(zoomedMax, 1, inverted, verb);\n }\n }\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n *\n * @private\n * @function Highcharts.Navigator#removeEvents\n */\n Navigator.prototype.removeEvents = function () {\n if (this.eventsToUnbind) {\n this.eventsToUnbind.forEach(function (unbind) {\n unbind();\n });\n this.eventsToUnbind = void 0;\n }\n this.removeBaseSeriesEvents();\n };\n /**\n * Remove data events.\n *\n * @private\n * @function Highcharts.Navigator#removeBaseSeriesEvents\n */\n Navigator.prototype.removeBaseSeriesEvents = function () {\n var baseSeries = this.baseSeries || [];\n if (this.navigatorEnabled && baseSeries[0]) {\n if (this.navigatorOptions.adaptToUpdatedData !== false) {\n baseSeries.forEach(function (series) {\n removeEvent(series, 'updatedData', this.updatedDataHandler);\n }, this);\n }\n // We only listen for extremes-events on the first baseSeries\n if (baseSeries[0].xAxis) {\n removeEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes);\n }\n }\n };\n /**\n * Initialize the Navigator object\n *\n * @private\n * @function Highcharts.Navigator#init\n */\n Navigator.prototype.init = function (chart) {\n var chartOptions = chart.options,\n navigatorOptions = chartOptions.navigator || {},\n navigatorEnabled = navigatorOptions.enabled,\n scrollbarOptions = chartOptions.scrollbar || {},\n scrollbarEnabled = scrollbarOptions.enabled,\n height = navigatorEnabled && navigatorOptions.height || 0,\n scrollbarHeight = scrollbarEnabled && scrollbarOptions.height || 0;\n this.handles = [];\n this.shades = [];\n this.chart = chart;\n this.setBaseSeries();\n this.height = height;\n this.scrollbarHeight = scrollbarHeight;\n this.scrollbarEnabled = scrollbarEnabled;\n this.navigatorEnabled = navigatorEnabled;\n this.navigatorOptions = navigatorOptions;\n this.scrollbarOptions = scrollbarOptions;\n this.outlineHeight = height + scrollbarHeight;\n this.opposite = pick(navigatorOptions.opposite, Boolean(!navigatorEnabled && chart.inverted)); // #6262\n var navigator = this,\n baseSeries = navigator.baseSeries,\n xAxisIndex = chart.xAxis.length,\n yAxisIndex = chart.yAxis.length,\n baseXaxis = baseSeries && baseSeries[0] && baseSeries[0].xAxis ||\n chart.xAxis[0] || { options: {} };\n chart.isDirtyBox = true;\n if (navigator.navigatorEnabled) {\n // an x axis is required for scrollbar also\n navigator.xAxis = new Axis(chart, merge({\n // inherit base xAxis' break and ordinal options\n breaks: baseXaxis.options.breaks,\n ordinal: baseXaxis.options.ordinal\n }, navigatorOptions.xAxis, {\n id: 'navigator-x-axis',\n yAxis: 'navigator-y-axis',\n isX: true,\n type: 'datetime',\n index: xAxisIndex,\n isInternal: true,\n offset: 0,\n keepOrdinalPadding: true,\n startOnTick: false,\n endOnTick: false,\n minPadding: 0,\n maxPadding: 0,\n zoomEnabled: false\n }, chart.inverted ? {\n offsets: [scrollbarHeight, 0, -scrollbarHeight, 0],\n width: height\n } : {\n offsets: [0, -scrollbarHeight, 0, scrollbarHeight],\n height: height\n }));\n navigator.yAxis = new Axis(chart, merge(navigatorOptions.yAxis, {\n id: 'navigator-y-axis',\n alignTicks: false,\n offset: 0,\n index: yAxisIndex,\n isInternal: true,\n reversed: pick((navigatorOptions.yAxis &&\n navigatorOptions.yAxis.reversed), (chart.yAxis[0] && chart.yAxis[0].reversed), false),\n zoomEnabled: false\n }, chart.inverted ? {\n width: height\n } : {\n height: height\n }));\n // If we have a base series, initialize the navigator series\n if (baseSeries || navigatorOptions.series.data) {\n navigator.updateNavigatorSeries(false);\n // If not, set up an event to listen for added series\n }\n else if (chart.series.length === 0) {\n navigator.unbindRedraw = addEvent(chart, 'beforeRedraw', function () {\n // We've got one, now add it as base\n if (chart.series.length > 0 && !navigator.series) {\n navigator.setBaseSeries();\n navigator.unbindRedraw(); // reset\n }\n });\n }\n navigator.reversedExtremes = (chart.inverted && !navigator.xAxis.reversed) || (!chart.inverted && navigator.xAxis.reversed);\n // Render items, so we can bind events to them:\n navigator.renderElements();\n // Add mouse events\n navigator.addMouseEvents();\n // in case of scrollbar only, fake an x axis to get translation\n }\n else {\n navigator.xAxis = {\n chart: chart,\n navigatorAxis: {\n fake: true\n },\n translate: function (value, reverse) {\n var axis = chart.xAxis[0], ext = axis.getExtremes(), scrollTrackWidth = axis.len - 2 * scrollbarHeight, min = numExt('min', axis.options.min, ext.dataMin), valueRange = numExt('max', axis.options.max, ext.dataMax) - min;\n return reverse ?\n // from pixel to value\n (value * valueRange / scrollTrackWidth) + min :\n // from value to pixel\n scrollTrackWidth * (value - min) / valueRange;\n },\n toPixels: function (value) {\n return this.translate(value);\n },\n toValue: function (value) {\n return this.translate(value, true);\n }\n };\n navigator.xAxis.navigatorAxis.axis = navigator.xAxis;\n navigator.xAxis.navigatorAxis.toFixedRange = (NavigatorAxisAdditions.prototype.toFixedRange.bind(navigator.xAxis.navigatorAxis));\n }\n // Initialize the scrollbar\n if (chart.options.scrollbar.enabled) {\n chart.scrollbar = navigator.scrollbar = new Scrollbar(chart.renderer, merge(chart.options.scrollbar, {\n margin: navigator.navigatorEnabled ? 0 : 10,\n vertical: chart.inverted\n }), chart);\n addEvent(navigator.scrollbar, 'changed', function (e) {\n var range = navigator.size,\n to = range * this.to,\n from = range * this.from;\n navigator.hasDragged = navigator.scrollbar.hasDragged;\n navigator.render(0, 0, from, to);\n if (this.shouldUpdateExtremes(e.DOMType)) {\n setTimeout(function () {\n navigator.onMouseUp(e);\n });\n }\n });\n }\n // Add data events\n navigator.addBaseSeriesEvents();\n // Add redraw events\n navigator.addChartEvents();\n };\n /**\n * Get the union data extremes of the chart - the outer data extremes of the\n * base X axis and the navigator axis.\n *\n * @private\n * @function Highcharts.Navigator#getUnionExtremes\n */\n Navigator.prototype.getUnionExtremes = function (returnFalseOnNoBaseSeries) {\n var baseAxis = this.chart.xAxis[0],\n navAxis = this.xAxis,\n navAxisOptions = navAxis.options,\n baseAxisOptions = baseAxis.options;\n var ret;\n if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {\n ret = {\n dataMin: pick(// #4053\n navAxisOptions && navAxisOptions.min, numExt('min', baseAxisOptions.min, baseAxis.dataMin, navAxis.dataMin, navAxis.min)),\n dataMax: pick(navAxisOptions && navAxisOptions.max, numExt('max', baseAxisOptions.max, baseAxis.dataMax, navAxis.dataMax, navAxis.max))\n };\n }\n return ret;\n };\n /**\n * Set the base series and update the navigator series from this. With a bit\n * of modification we should be able to make this an API method to be called\n * from the outside\n *\n * @private\n * @function Highcharts.Navigator#setBaseSeries\n * @param {Highcharts.SeriesOptionsType} [baseSeriesOptions]\n * Additional series options for a navigator\n * @param {boolean} [redraw]\n * Whether to redraw after update.\n */\n Navigator.prototype.setBaseSeries = function (baseSeriesOptions, redraw) {\n var chart = this.chart,\n baseSeries = this.baseSeries = [];\n baseSeriesOptions = (baseSeriesOptions ||\n chart.options && chart.options.navigator.baseSeries ||\n (chart.series.length ?\n // Find the first non-navigator series (#8430)\n find(chart.series, function (s) { return (!s.options.isInternal); }).index :\n 0));\n // Iterate through series and add the ones that should be shown in\n // navigator.\n (chart.series || []).forEach(function (series, i) {\n if (\n // Don't include existing nav series\n !series.options.isInternal &&\n (series.options.showInNavigator ||\n (i === baseSeriesOptions ||\n series.options.id === baseSeriesOptions) &&\n series.options.showInNavigator !== false)) {\n baseSeries.push(series);\n }\n });\n // When run after render, this.xAxis already exists\n if (this.xAxis && !this.xAxis.navigatorAxis.fake) {\n this.updateNavigatorSeries(true, redraw);\n }\n };\n /**\n * Update series in the navigator from baseSeries, adding new if does not\n * exist.\n *\n * @private\n * @function Highcharts.Navigator.updateNavigatorSeries\n */\n Navigator.prototype.updateNavigatorSeries = function (addEvents, redraw) {\n var navigator = this,\n chart = navigator.chart,\n baseSeries = navigator.baseSeries,\n navSeriesMixin = {\n enableMouseTracking: false,\n index: null,\n linkedTo: null,\n group: 'nav',\n padXAxis: false,\n xAxis: 'navigator-x-axis',\n yAxis: 'navigator-y-axis',\n showInLegend: false,\n stacking: void 0,\n isInternal: true,\n states: {\n inactive: {\n opacity: 1\n }\n }\n }, \n // Remove navigator series that are no longer in the baseSeries\n navigatorSeries = navigator.series =\n (navigator.series || []).filter(function (navSeries) {\n var base = navSeries.baseSeries;\n if (baseSeries.indexOf(base) < 0) { // Not in array\n // If there is still a base series connected to this\n // series, remove event handler and reference.\n if (base) {\n removeEvent(base, 'updatedData', navigator.updatedDataHandler);\n delete base.navigatorSeries;\n }\n // Kill the nav series. It may already have been\n // destroyed (#8715).\n if (navSeries.chart) {\n navSeries.destroy();\n }\n return false;\n }\n return true;\n });\n var baseOptions,\n mergedNavSeriesOptions,\n chartNavigatorSeriesOptions = navigator.navigatorOptions.series,\n baseNavigatorOptions;\n // Go through each base series and merge the options to create new\n // series\n if (baseSeries && baseSeries.length) {\n baseSeries.forEach(function (base) {\n var linkedNavSeries = base.navigatorSeries,\n userNavOptions = extend(\n // Grab color and visibility from base as default\n {\n color: base.color,\n visible: base.visible\n }, !isArray(chartNavigatorSeriesOptions) ?\n chartNavigatorSeriesOptions :\n defaultOptions.navigator.series);\n // Don't update if the series exists in nav and we have disabled\n // adaptToUpdatedData.\n if (linkedNavSeries &&\n navigator.navigatorOptions.adaptToUpdatedData === false) {\n return;\n }\n navSeriesMixin.name = 'Navigator ' + baseSeries.length;\n baseOptions = base.options || {};\n baseNavigatorOptions = baseOptions.navigatorOptions || {};\n // The dataLabels options are not merged correctly\n // if the settings are an array, #13847.\n userNavOptions.dataLabels = splat(userNavOptions.dataLabels);\n mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);\n // Once nav series type is resolved, pick correct pointRange\n mergedNavSeriesOptions.pointRange = pick(\n // Stricte set pointRange in options\n userNavOptions.pointRange, baseNavigatorOptions.pointRange, \n // Fallback to default values, e.g. `null` for column\n defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line'].pointRange);\n // Merge data separately. Do a slice to avoid mutating the\n // navigator options from base series (#4923).\n var navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data;\n navigator.hasNavigatorData =\n navigator.hasNavigatorData || !!navigatorSeriesData;\n mergedNavSeriesOptions.data =\n navigatorSeriesData ||\n baseOptions.data && baseOptions.data.slice(0);\n // Update or add the series\n if (linkedNavSeries && linkedNavSeries.options) {\n linkedNavSeries.update(mergedNavSeriesOptions, redraw);\n }\n else {\n base.navigatorSeries = chart.initSeries(mergedNavSeriesOptions);\n base.navigatorSeries.baseSeries = base; // Store ref\n navigatorSeries.push(base.navigatorSeries);\n }\n });\n }\n // If user has defined data (and no base series) or explicitly defined\n // navigator.series as an array, we create these series on top of any\n // base series.\n if (chartNavigatorSeriesOptions.data &&\n !(baseSeries && baseSeries.length) ||\n isArray(chartNavigatorSeriesOptions)) {\n navigator.hasNavigatorData = false;\n // Allow navigator.series to be an array\n chartNavigatorSeriesOptions =\n splat(chartNavigatorSeriesOptions);\n chartNavigatorSeriesOptions.forEach(function (userSeriesOptions, i) {\n navSeriesMixin.name =\n 'Navigator ' + (navigatorSeries.length + 1);\n mergedNavSeriesOptions = merge(defaultOptions.navigator.series, {\n // Since we don't have a base series to pull color from,\n // try to fake it by using color from series with same\n // index. Otherwise pull from the colors array. We need\n // an explicit color as otherwise updates will increment\n // color counter and we'll get a new color for each\n // update of the nav series.\n color: chart.series[i] &&\n !chart.series[i].options.isInternal &&\n chart.series[i].color ||\n chart.options.colors[i] ||\n chart.options.colors[0]\n }, navSeriesMixin, userSeriesOptions);\n mergedNavSeriesOptions.data = userSeriesOptions.data;\n if (mergedNavSeriesOptions.data) {\n navigator.hasNavigatorData = true;\n navigatorSeries.push(chart.initSeries(mergedNavSeriesOptions));\n }\n });\n }\n if (addEvents) {\n this.addBaseSeriesEvents();\n }\n };\n /**\n * Add data events.\n * For example when main series is updated we need to recalculate extremes\n *\n * @private\n * @function Highcharts.Navigator#addBaseSeriesEvent\n */\n Navigator.prototype.addBaseSeriesEvents = function () {\n var _this = this;\n var navigator = this,\n baseSeries = navigator.baseSeries || [];\n // Bind modified extremes event to first base's xAxis only.\n // In event of > 1 base-xAxes, the navigator will ignore those.\n // Adding this multiple times to the same axis is no problem, as\n // duplicates should be discarded by the browser.\n if (baseSeries[0] && baseSeries[0].xAxis) {\n baseSeries[0].eventsToUnbind.push(addEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes));\n }\n baseSeries.forEach(function (base) {\n // Link base series show/hide to navigator series visibility\n base.eventsToUnbind.push(addEvent(base, 'show', function () {\n if (this.navigatorSeries) {\n this.navigatorSeries.setVisible(true, false);\n }\n }));\n base.eventsToUnbind.push(addEvent(base, 'hide', function () {\n if (this.navigatorSeries) {\n this.navigatorSeries.setVisible(false, false);\n }\n }));\n // Respond to updated data in the base series, unless explicitily\n // not adapting to data changes.\n if (_this.navigatorOptions.adaptToUpdatedData !== false) {\n if (base.xAxis) {\n base.eventsToUnbind.push(addEvent(base, 'updatedData', _this.updatedDataHandler));\n }\n }\n // Handle series removal\n base.eventsToUnbind.push(addEvent(base, 'remove', function () {\n if (this.navigatorSeries) {\n erase(navigator.series, this.navigatorSeries);\n if (defined(this.navigatorSeries.options)) {\n this.navigatorSeries.remove(false);\n }\n delete this.navigatorSeries;\n }\n }));\n });\n };\n /**\n * Get minimum from all base series connected to the navigator\n * @private\n * @param {number} currentSeriesMin\n * Minium from the current series\n * @return {number}\n * Minimum from all series\n */\n Navigator.prototype.getBaseSeriesMin = function (currentSeriesMin) {\n return this.baseSeries.reduce(function (min, series) {\n // (#10193)\n return Math.min(min, series.xData && series.xData.length ?\n series.xData[0] : min);\n }, currentSeriesMin);\n };\n /**\n * Set the navigator x axis extremes to reflect the total. The navigator\n * extremes should always be the extremes of the union of all series in the\n * chart as well as the navigator series.\n *\n * @private\n * @function Highcharts.Navigator#modifyNavigatorAxisExtremes\n */\n Navigator.prototype.modifyNavigatorAxisExtremes = function () {\n var xAxis = this.xAxis;\n if (typeof xAxis.getExtremes !== 'undefined') {\n var unionExtremes = this.getUnionExtremes(true);\n if (unionExtremes &&\n (unionExtremes.dataMin !== xAxis.min ||\n unionExtremes.dataMax !== xAxis.max)) {\n xAxis.min = unionExtremes.dataMin;\n xAxis.max = unionExtremes.dataMax;\n }\n }\n };\n /**\n * Hook to modify the base axis extremes with information from the Navigator\n *\n * @private\n * @function Highcharts.Navigator#modifyBaseAxisExtremes\n */\n Navigator.prototype.modifyBaseAxisExtremes = function () {\n var baseXAxis = this,\n navigator = baseXAxis.chart.navigator,\n baseExtremes = baseXAxis.getExtremes(),\n baseMin = baseExtremes.min,\n baseMax = baseExtremes.max,\n baseDataMin = baseExtremes.dataMin,\n baseDataMax = baseExtremes.dataMax,\n range = baseMax - baseMin,\n stickToMin = navigator.stickToMin,\n stickToMax = navigator.stickToMax,\n overscroll = pick(baseXAxis.options.overscroll, 0),\n navigatorSeries = navigator.series && navigator.series[0],\n hasSetExtremes = !!baseXAxis.setExtremes, \n // When the extremes have been set by range selector button, don't\n // stick to min or max. The range selector buttons will handle the\n // extremes. (#5489)\n unmutable = baseXAxis.eventArgs &&\n baseXAxis.eventArgs.trigger === 'rangeSelectorButton';\n var newMax,\n newMin;\n if (!unmutable) {\n // If the zoomed range is already at the min, move it to the right\n // as new data comes in\n if (stickToMin) {\n newMin = baseDataMin;\n newMax = newMin + range;\n }\n // If the zoomed range is already at the max, move it to the right\n // as new data comes in\n if (stickToMax) {\n newMax = baseDataMax + overscroll;\n // If stickToMin is true, the new min value is set above\n if (!stickToMin) {\n newMin = Math.max(baseDataMin, // don't go below data extremes (#13184)\n newMax - range, navigator.getBaseSeriesMin(navigatorSeries && navigatorSeries.xData ?\n navigatorSeries.xData[0] :\n -Number.MAX_VALUE));\n }\n }\n // Update the extremes\n if (hasSetExtremes && (stickToMin || stickToMax)) {\n if (isNumber(newMin)) {\n baseXAxis.min = baseXAxis.userMin = newMin;\n baseXAxis.max = baseXAxis.userMax = newMax;\n }\n }\n }\n // Reset\n navigator.stickToMin =\n navigator.stickToMax = null;\n };\n /**\n * Handler for updated data on the base series. When data is modified, the\n * navigator series must reflect it. This is called from the Chart.redraw\n * function before axis and series extremes are computed.\n *\n * @private\n * @function Highcharts.Navigator#updateDataHandler\n */\n Navigator.prototype.updatedDataHandler = function () {\n var navigator = this.chart.navigator,\n baseSeries = this,\n navigatorSeries = this.navigatorSeries,\n shouldStickToMax = navigator.reversedExtremes ?\n Math.round(navigator.zoomedMin) === 0 :\n Math.round(navigator.zoomedMax) >= Math.round(navigator.size);\n // If the scrollbar is scrolled all the way to the right, keep right as\n // new data comes in, unless user set navigator.stickToMax to false.\n navigator.stickToMax = pick(this.chart.options.navigator &&\n this.chart.options.navigator.stickToMax, shouldStickToMax);\n navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);\n // Set the navigator series data to the new data of the base series\n if (navigatorSeries && !navigator.hasNavigatorData) {\n navigatorSeries.options.pointStart = baseSeries.xData[0];\n navigatorSeries.setData(baseSeries.options.data, false, null, false); // #5414\n }\n };\n /**\n * Detect if the zoomed area should stick to the minimum, #14742.\n *\n * @private\n * @function Highcharts.Navigator#shouldStickToMin\n */\n Navigator.prototype.shouldStickToMin = function (baseSeries, navigator) {\n var xDataMin = navigator.getBaseSeriesMin(baseSeries.xData[0]),\n xAxis = baseSeries.xAxis,\n max = xAxis.max,\n min = xAxis.min,\n range = xAxis.options.range;\n var stickToMin = true;\n if (isNumber(max) && isNumber(min)) {\n // If range declared, stick to the minimum only if the range\n // is smaller than the data set range.\n if (range && max - xDataMin > 0) {\n stickToMin = max - xDataMin < range;\n }\n else {\n // If the current axis minimum falls outside the new\n // updated dataset, we must adjust.\n stickToMin = min <= xDataMin;\n }\n }\n else {\n stickToMin = false; // #15864\n }\n return stickToMin;\n };\n /**\n * Add chart events, like redrawing navigator, when chart requires that.\n *\n * @private\n * @function Highcharts.Navigator#addChartEvents\n */\n Navigator.prototype.addChartEvents = function () {\n if (!this.eventsToUnbind) {\n this.eventsToUnbind = [];\n }\n this.eventsToUnbind.push(\n // Move the scrollbar after redraw, like after data updata even if\n // axes don't redraw\n addEvent(this.chart, 'redraw', function () {\n var navigator = this.navigator,\n xAxis = navigator && (navigator.baseSeries &&\n navigator.baseSeries[0] &&\n navigator.baseSeries[0].xAxis ||\n this.xAxis[0]); // #5709, #13114\n if (xAxis) {\n navigator.render(xAxis.min,\n xAxis.max);\n }\n }), \n // Make room for the navigator, can be placed around the chart:\n addEvent(this.chart, 'getMargins', function () {\n var chart = this,\n navigator = chart.navigator,\n marginName = navigator.opposite ?\n 'plotTop' : 'marginBottom';\n if (chart.inverted) {\n marginName = navigator.opposite ?\n 'marginRight' : 'plotLeft';\n }\n chart[marginName] =\n (chart[marginName] || 0) + (navigator.navigatorEnabled || !chart.inverted ?\n navigator.outlineHeight :\n 0) + navigator.navigatorOptions.margin;\n }));\n };\n /**\n * Destroys allocated elements.\n *\n * @private\n * @function Highcharts.Navigator#destroy\n */\n Navigator.prototype.destroy = function () {\n var _this = this;\n // Disconnect events added in addEvents\n this.removeEvents();\n if (this.xAxis) {\n erase(this.chart.xAxis, this.xAxis);\n erase(this.chart.axes, this.xAxis);\n }\n if (this.yAxis) {\n erase(this.chart.yAxis, this.yAxis);\n erase(this.chart.axes, this.yAxis);\n }\n // Destroy series\n (this.series || []).forEach(function (s) {\n if (s.destroy) {\n s.destroy();\n }\n });\n // Destroy properties\n [\n 'series', 'xAxis', 'yAxis', 'shades', 'outline', 'scrollbarTrack',\n 'scrollbarRifles', 'scrollbarGroup', 'scrollbar', 'navigatorGroup',\n 'rendered'\n ].forEach(function (prop) {\n if (_this[prop] && _this[prop].destroy) {\n _this[prop].destroy();\n }\n _this[prop] = null;\n });\n // Destroy elements in collection\n [this.handles].forEach(function (coll) {\n destroyObjectProperties(coll);\n });\n };\n return Navigator;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return Navigator;\n });\n _registerModule(_modules, 'Stock/RangeSelector/RangeSelectorDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Declarations\n *\n * */\n /**\n * Language object. The language object is global and it can't be set\n * on each chart initialization. Instead, use `Highcharts.setOptions` to\n * set it before any chart is initialized.\n *\n * ```js\n * Highcharts.setOptions({\n * lang: {\n * months: [\n * 'Janvier', 'Février', 'Mars', 'Avril',\n * 'Mai', 'Juin', 'Juillet', 'Août',\n * 'Septembre', 'Octobre', 'Novembre', 'Décembre'\n * ],\n * weekdays: [\n * 'Dimanche', 'Lundi', 'Mardi', 'Mercredi',\n * 'Jeudi', 'Vendredi', 'Samedi'\n * ]\n * }\n * });\n * ```\n *\n * @optionparent lang\n */\n var lang = {\n /**\n * The text for the label for the range selector buttons.\n *\n * @product highstock gantt\n */\n rangeSelectorZoom: 'Zoom',\n /**\n * The text for the label for the \"from\" input box in the range\n * selector. Since v9.0,\n this string is empty as the label is not\n * rendered by default.\n *\n * @product highstock gantt\n */\n rangeSelectorFrom: '',\n /**\n * The text for the label for the \"to\" input box in the range selector.\n *\n * @product highstock gantt\n */\n rangeSelectorTo: '→'\n };\n /**\n * The range selector is a tool for selecting ranges to display within\n * the chart. It provides buttons to select preconfigured ranges in\n * the chart, like 1 day, 1 week, 1 month etc. It also provides input\n * boxes where min and max dates can be manually input.\n *\n * @product highstock gantt\n * @optionparent rangeSelector\n */\n var rangeSelector = {\n /**\n * Whether to enable all buttons from the start. By default buttons are\n * only enabled if the corresponding time range exists on the X axis,\n * but enabling all buttons allows for dynamically loading different\n * time ranges.\n *\n * @sample {highstock} stock/rangeselector/allbuttonsenabled-true/\n * All buttons enabled\n *\n * @since 2.0.3\n */\n allButtonsEnabled: false,\n /**\n * An array of configuration objects for the buttons.\n *\n * Defaults to:\n * ```js\n * buttons: [{\n * type: 'month',\n * count: 1,\n * text: '1m',\n * title: 'View 1 month'\n * }, {\n * type: 'month',\n * count: 3,\n * text: '3m',\n * title: 'View 3 months'\n * }, {\n * type: 'month',\n * count: 6,\n * text: '6m',\n * title: 'View 6 months'\n * }, {\n * type: 'ytd',\n * text: 'YTD',\n * title: 'View year to date'\n * }, {\n * type: 'year',\n * count: 1,\n * text: '1y',\n * title: 'View 1 year'\n * }, {\n * type: 'all',\n * text: 'All',\n * title: 'View all'\n * }]\n * ```\n *\n * @sample {highstock} stock/rangeselector/datagrouping/\n * Data grouping by buttons\n *\n * @type {Array<*>}\n */\n buttons: void 0,\n /**\n * How many units of the defined type the button should span. If `type`\n * is \"month\" and `count` is 3,\n the button spans three months.\n *\n * @type {number}\n * @default 1\n * @apioption rangeSelector.buttons.count\n */\n /**\n * Fires when clicking on the rangeSelector button. One parameter,\n * event,\n is passed to the function,\n containing common event\n * information.\n *\n * ```js\n * click: function(e) {\n * console.log(this);\n * }\n * ```\n *\n * Return false to stop default button's click action.\n *\n * @sample {highstock} stock/rangeselector/button-click/\n * Click event on the button\n *\n * @type {Highcharts.RangeSelectorClickCallbackFunction}\n * @apioption rangeSelector.buttons.events.click\n */\n /**\n * Additional range (in milliseconds) added to the end of the calculated\n * time span.\n *\n * @sample {highstock} stock/rangeselector/min-max-offsets/\n * Button offsets\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @apioption rangeSelector.buttons.offsetMax\n */\n /**\n * Additional range (in milliseconds) added to the start of the\n * calculated time span.\n *\n * @sample {highstock} stock/rangeselector/min-max-offsets/\n * Button offsets\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @apioption rangeSelector.buttons.offsetMin\n */\n /**\n * When buttons apply dataGrouping on a series, by default zooming\n * in/out will deselect buttons and unset dataGrouping. Enable this\n * option to keep buttons selected when extremes change.\n *\n * @sample {highstock} stock/rangeselector/preserve-datagrouping/\n * Different preserveDataGrouping settings\n *\n * @type {boolean}\n * @default false\n * @since 6.1.2\n * @apioption rangeSelector.buttons.preserveDataGrouping\n */\n /**\n * A custom data grouping object for each button.\n *\n * @see [series.dataGrouping](#plotOptions.series.dataGrouping)\n *\n * @sample {highstock} stock/rangeselector/datagrouping/\n * Data grouping by range selector buttons\n *\n * @type {*}\n * @extends plotOptions.series.dataGrouping\n * @apioption rangeSelector.buttons.dataGrouping\n */\n /**\n * The text for the button itself.\n *\n * @type {string}\n * @apioption rangeSelector.buttons.text\n */\n /**\n * Explanation for the button, shown as a tooltip on hover, and used by\n * assistive technology.\n *\n * @type {string}\n * @apioption rangeSelector.buttons.title\n */\n /**\n * Defined the time span for the button. Can be one of `millisecond`,\n * `second`, `minute`, `hour`, `day`, `week`, `month`, `year`, `ytd`,\n * and `all`.\n *\n * @type {Highcharts.RangeSelectorButtonTypeValue}\n * @apioption rangeSelector.buttons.type\n */\n /**\n * The space in pixels between the buttons in the range selector.\n */\n buttonSpacing: 5,\n /**\n * Whether to collapse the range selector buttons into a dropdown when\n * there is not enough room to show everything in a single row, instead\n * of dividing the range selector into multiple rows.\n * Can be one of the following:\n * - `always`: Always collapse\n * - `responsive`: Only collapse when there is not enough room\n * - `never`: Never collapse\n *\n * @sample {highstock} stock/rangeselector/dropdown/\n * Dropdown option\n *\n * @validvalue [\"always\", \"responsive\", \"never\"]\n * @since 9.0.0\n */\n dropdown: 'responsive',\n /**\n * Enable or disable the range selector. Default to `true` for stock\n * charts, using the `stockChart` factory.\n *\n * @sample {highstock} stock/rangeselector/enabled/\n * Disable the range selector\n *\n * @type {boolean|undefined}\n * @default {highstock} true\n */\n enabled: void 0,\n /**\n * The vertical alignment of the rangeselector box. Allowed properties\n * are `top`, `middle`, `bottom`.\n *\n * @sample {highstock} stock/rangeselector/vertical-align-middle/\n * Middle\n * @sample {highstock} stock/rangeselector/vertical-align-bottom/\n * Bottom\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 6.0.0\n */\n verticalAlign: 'top',\n /**\n * A collection of attributes for the buttons. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,\n * a collection of CSS properties for the text.\n *\n * The object can also be extended with states, so you can set\n * presentational options for `hover`, `select` or `disabled` button\n * states.\n *\n * CSS styles for the text label.\n *\n * In styled mode, the buttons are styled by the\n * `.highcharts-range-selector-buttons .highcharts-button` rule with its\n * different states.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.SVGAttributes}\n */\n buttonTheme: {\n /** @ignore */\n width: 28,\n /** @ignore */\n height: 18,\n /** @ignore */\n padding: 2,\n /** @ignore */\n zIndex: 7 // #484, #852\n },\n /**\n * When the rangeselector is floating, the plot area does not reserve\n * space for it. This opens for positioning anywhere on the chart.\n *\n * @sample {highstock} stock/rangeselector/floating/\n * Placing the range selector between the plot area and the\n * navigator\n *\n * @since 6.0.0\n */\n floating: false,\n /**\n * The x offset of the range selector relative to its horizontal\n * alignment within `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @since 6.0.0\n */\n x: 0,\n /**\n * The y offset of the range selector relative to its horizontal\n * alignment within `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @since 6.0.0\n */\n y: 0,\n /**\n * Deprecated. The height of the range selector. Currently it is\n * calculated dynamically.\n *\n * @deprecated\n * @type {number|undefined}\n * @since 2.1.9\n */\n height: void 0,\n /**\n * The border color of the date input boxes.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.ColorString}\n * @since 1.3.7\n */\n inputBoxBorderColor: 'none',\n /**\n * The pixel height of the date input boxes.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @since 1.3.7\n */\n inputBoxHeight: 17,\n /**\n * The pixel width of the date input boxes. When `undefined`, the width\n * is fitted to the rendered content.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {number|undefined}\n * @since 1.3.7\n */\n inputBoxWidth: void 0,\n /**\n * The date format in the input boxes when not selected for editing.\n * Defaults to `%b %e, %Y`.\n *\n * This is used to determine which type of input to show,\n * `datetime-local`, `date` or `time` and falling back to `text` when\n * the browser does not support the input type or the format contains\n * milliseconds.\n *\n * @sample {highstock} stock/rangeselector/input-type/\n * Input types\n * @sample {highstock} stock/rangeselector/input-format/\n * Milliseconds in the range selector\n *\n */\n inputDateFormat: '%b %e, %Y',\n /**\n * A custom callback function to parse values entered in the input boxes\n * and return a valid JavaScript time as milliseconds since 1970.\n * The first argument passed is a value to parse,\n * second is a boolean indicating use of the UTC time.\n *\n * This will only get called for inputs of type `text`. Since v8.2.3,\n * the input type is dynamically determined based on the granularity\n * of the `inputDateFormat` and the browser support.\n *\n * @sample {highstock} stock/rangeselector/input-format/\n * Milliseconds in the range selector\n *\n * @type {Highcharts.RangeSelectorParseCallbackFunction}\n * @since 1.3.3\n */\n inputDateParser: void 0,\n /**\n * The date format in the input boxes when they are selected for\n * editing. This must be a format that is recognized by JavaScript\n * Date.parse.\n *\n * This will only be used for inputs of type `text`. Since v8.2.3,\n * the input type is dynamically determined based on the granularity\n * of the `inputDateFormat` and the browser support.\n *\n * @sample {highstock} stock/rangeselector/input-format/\n * Milliseconds in the range selector\n *\n */\n inputEditDateFormat: '%Y-%m-%d',\n /**\n * Enable or disable the date input boxes.\n */\n inputEnabled: true,\n /**\n * Positioning for the input boxes. Allowed properties are `align`,\n * `x` and `y`.\n *\n * @since 1.2.4\n */\n inputPosition: {\n /**\n * The alignment of the input box. Allowed properties are `left`,\n * `center`, `right`.\n *\n * @sample {highstock} stock/rangeselector/input-button-position/\n * Alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 6.0.0\n */\n align: 'right',\n /**\n * X offset of the input row.\n */\n x: 0,\n /**\n * Y offset of the input row.\n */\n y: 0\n },\n /**\n * The space in pixels between the labels and the date input boxes in\n * the range selector.\n *\n * @since 9.0.0\n */\n inputSpacing: 5,\n /**\n * The index of the button to appear pre-selected.\n *\n * @type {number}\n */\n selected: void 0,\n /**\n * Positioning for the button row.\n *\n * @since 1.2.4\n */\n buttonPosition: {\n /**\n * The alignment of the input box. Allowed properties are `left`,\n * `center`, `right`.\n *\n * @sample {highstock} stock/rangeselector/input-button-position/\n * Alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 6.0.0\n */\n align: 'left',\n /**\n * X offset of the button row.\n */\n x: 0,\n /**\n * Y offset of the button row.\n */\n y: 0\n },\n /**\n * CSS for the HTML inputs in the range selector.\n *\n * In styled mode, the inputs are styled by the\n * `.highcharts-range-input text` rule in SVG mode, and\n * `input.highcharts-range-selector` when active.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.CSSObject}\n * @apioption rangeSelector.inputStyle\n */\n inputStyle: {\n /** @ignore */\n color: \"#335cad\" /* Palette.highlightColor80 */,\n /** @ignore */\n cursor: 'pointer'\n },\n /**\n * CSS styles for the labels - the Zoom, From and To texts.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-range-label` class.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.CSSObject}\n */\n labelStyle: {\n /** @ignore */\n color: \"#666666\" /* Palette.neutralColor60 */\n }\n };\n /* *\n *\n * Default Export\n *\n * */\n var RangeSelectorDefaults = {\n lang: lang,\n rangeSelector: rangeSelector\n };\n\n return RangeSelectorDefaults;\n });\n _registerModule(_modules, 'Stock/RangeSelector/RangeSelectorComposition.js', [_modules['Core/Defaults.js'], _modules['Stock/RangeSelector/RangeSelectorDefaults.js'], _modules['Core/Utilities.js']], function (D, RangeSelectorDefaults, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions,\n setOptions = D.setOptions;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n find = U.find,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var chartDestroyEvents = [];\n var composedMembers = [];\n /* *\n *\n * Variables\n *\n * */\n var RangeSelectorConstructor;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the axis min value based on the range option and the current max. For\n * stock charts this is extended via the {@link RangeSelector} so that if the\n * selected range is a multiple of months or years, it is compensated for\n * various month lengths.\n *\n * @private\n * @function Highcharts.Axis#minFromRange\n * @return {number|undefined}\n * The new minimum value.\n */\n function axisMinFromRange() {\n var rangeOptions = this.range,\n type = rangeOptions.type,\n max = this.max,\n time = this.chart.time, \n // Get the true range from a start date\n getTrueRange = function (base,\n count) {\n var timeName = type === 'year' ?\n 'FullYear' : 'Month';\n var date = new time.Date(base);\n var basePeriod = time.get(timeName,\n date);\n time.set(timeName, date, basePeriod + count);\n if (basePeriod === time.get(timeName, date)) {\n time.set('Date', date, 0); // #6537\n }\n return date.getTime() - base;\n };\n var min,\n range;\n if (isNumber(rangeOptions)) {\n min = max - rangeOptions;\n range = rangeOptions;\n }\n else if (rangeOptions) {\n min = max + getTrueRange(max, -(rangeOptions.count || 1));\n // Let the fixedRange reflect initial settings (#5930)\n if (this.chart) {\n this.chart.fixedRange = max - min;\n }\n }\n var dataMin = pick(this.dataMin,\n Number.MIN_VALUE);\n if (!isNumber(min)) {\n min = dataMin;\n }\n if (min <= dataMin) {\n min = dataMin;\n if (typeof range === 'undefined') { // #4501\n range = getTrueRange(min, rangeOptions.count);\n }\n this.newMax = Math.min(min + range, pick(this.dataMax, Number.MAX_VALUE));\n }\n if (!isNumber(max)) {\n min = void 0;\n }\n else if (!isNumber(rangeOptions) &&\n rangeOptions &&\n rangeOptions._offsetMin) {\n min += rangeOptions._offsetMin;\n }\n return min;\n }\n /**\n * @private\n */\n function compose(AxisClass, ChartClass, RangeSelectorClass) {\n RangeSelectorConstructor = RangeSelectorClass;\n if (composedMembers.indexOf(AxisClass) === -1) {\n composedMembers.push(AxisClass);\n AxisClass.prototype.minFromRange = axisMinFromRange;\n }\n if (composedMembers.indexOf(ChartClass) === -1) {\n composedMembers.push(ChartClass);\n addEvent(ChartClass, 'afterGetContainer', onChartAfterGetContainer);\n addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n addEvent(ChartClass, 'destroy', onChartDestroy);\n addEvent(ChartClass, 'getMargins', onChartGetMargins);\n addEvent(ChartClass, 'render', onChartRender);\n addEvent(ChartClass, 'update', onChartUpdate);\n var chartProto = ChartClass.prototype;\n chartProto.callbacks.push(onChartCallback);\n }\n if (composedMembers.indexOf(setOptions) === -1) {\n extend(defaultOptions, { rangeSelector: RangeSelectorDefaults.rangeSelector });\n extend(defaultOptions.lang, RangeSelectorDefaults.lang);\n }\n }\n /**\n * Initialize rangeselector for stock charts\n * @private\n */\n function onChartAfterGetContainer() {\n if (this.options.rangeSelector &&\n this.options.rangeSelector.enabled) {\n this.rangeSelector = new RangeSelectorConstructor(this);\n }\n }\n /**\n * @private\n */\n function onChartBeforeRender() {\n var chart = this,\n axes = chart.axes,\n rangeSelector = chart.rangeSelector;\n if (rangeSelector) {\n if (isNumber(rangeSelector.deferredYTDClick)) {\n rangeSelector.clickButton(rangeSelector.deferredYTDClick);\n delete rangeSelector.deferredYTDClick;\n }\n axes.forEach(function (axis) {\n axis.updateNames();\n axis.setScale();\n });\n chart.getAxisMargins();\n rangeSelector.render();\n var verticalAlign = rangeSelector.options.verticalAlign;\n if (!rangeSelector.options.floating) {\n if (verticalAlign === 'bottom') {\n this.extraBottomMargin = true;\n }\n else if (verticalAlign !== 'middle') {\n this.extraTopMargin = true;\n }\n }\n }\n }\n /**\n * @private\n */\n function onChartCallback(chart) {\n var extremes,\n legend,\n alignTo,\n verticalAlign;\n var rangeSelector = chart.rangeSelector,\n redraw = function () {\n if (rangeSelector) {\n extremes = chart.xAxis[0].getExtremes();\n legend = chart.legend;\n verticalAlign = (rangeSelector &&\n rangeSelector.options.verticalAlign);\n if (isNumber(extremes.min)) {\n rangeSelector.render(extremes.min, extremes.max);\n }\n // Re-align the legend so that it's below the rangeselector\n if (legend.display &&\n verticalAlign === 'top' &&\n verticalAlign === legend.options.verticalAlign) {\n // Create a new alignment box for the legend.\n alignTo = merge(chart.spacingBox);\n if (legend.options.layout === 'vertical') {\n alignTo.y = chart.plotTop;\n }\n else {\n alignTo.y += rangeSelector.getHeight();\n }\n legend.group.placed = false; // Don't animate the alignment.\n legend.align(alignTo);\n }\n }\n };\n if (rangeSelector) {\n var events = find(chartDestroyEvents,\n function (e) { return e[0] === chart; });\n if (!events) {\n chartDestroyEvents.push([chart, [\n // redraw the scroller on setExtremes\n addEvent(chart.xAxis[0], 'afterSetExtremes', function (e) {\n if (rangeSelector) {\n rangeSelector.render(e.min, e.max);\n }\n }),\n // redraw the scroller chart resize\n addEvent(chart, 'redraw', redraw)\n ]]);\n }\n // do it now\n redraw();\n }\n }\n /**\n * Remove resize/afterSetExtremes at chart destroy.\n * @private\n */\n function onChartDestroy() {\n for (var i = 0, iEnd = chartDestroyEvents.length; i < iEnd; ++i) {\n var events = chartDestroyEvents[i];\n if (events[0] === this) {\n events[1].forEach(function (unbind) { return unbind(); });\n chartDestroyEvents.splice(i, 1);\n return;\n }\n }\n }\n function onChartGetMargins() {\n var rangeSelector = this.rangeSelector;\n if (rangeSelector) {\n var rangeSelectorHeight = rangeSelector.getHeight();\n if (this.extraTopMargin) {\n this.plotTop += rangeSelectorHeight;\n }\n if (this.extraBottomMargin) {\n this.marginBottom += rangeSelectorHeight;\n }\n }\n }\n /**\n * @private\n */\n function onChartRender() {\n var chart = this,\n rangeSelector = chart.rangeSelector;\n if (rangeSelector && !rangeSelector.options.floating) {\n rangeSelector.render();\n var verticalAlign = rangeSelector.options.verticalAlign;\n if (verticalAlign === 'bottom') {\n this.extraBottomMargin = true;\n }\n else if (verticalAlign !== 'middle') {\n this.extraTopMargin = true;\n }\n }\n }\n /**\n * @private\n */\n function onChartUpdate(e) {\n var chart = this,\n options = e.options,\n optionsRangeSelector = options.rangeSelector,\n extraBottomMarginWas = this.extraBottomMargin,\n extraTopMarginWas = this.extraTopMargin;\n var rangeSelector = chart.rangeSelector;\n if (optionsRangeSelector &&\n optionsRangeSelector.enabled &&\n !defined(rangeSelector) &&\n this.options.rangeSelector) {\n this.options.rangeSelector.enabled = true;\n this.rangeSelector = rangeSelector = new RangeSelectorConstructor(this);\n }\n this.extraBottomMargin = false;\n this.extraTopMargin = false;\n if (rangeSelector) {\n onChartCallback(this);\n var verticalAlign = (optionsRangeSelector &&\n optionsRangeSelector.verticalAlign) || (rangeSelector.options && rangeSelector.options.verticalAlign);\n if (!rangeSelector.options.floating) {\n if (verticalAlign === 'bottom') {\n this.extraBottomMargin = true;\n }\n else if (verticalAlign !== 'middle') {\n this.extraTopMargin = true;\n }\n }\n if (this.extraBottomMargin !== extraBottomMarginWas ||\n this.extraTopMargin !== extraTopMarginWas) {\n this.isDirtyBox = true;\n }\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var RangeSelectorComposition = {\n compose: compose\n };\n\n return RangeSelectorComposition;\n });\n _registerModule(_modules, 'Stock/RangeSelector/RangeSelector.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Defaults.js'], _modules['Core/Globals.js'], _modules['Stock/RangeSelector/RangeSelectorComposition.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (Axis, D, H, RangeSelectorComposition, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n discardElement = U.discardElement,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n objectEach = U.objectEach,\n pad = U.pad,\n pick = U.pick,\n pInt = U.pInt,\n splat = U.splat;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the preferred input type based on a date format string.\n *\n * @private\n * @function preferredInputType\n */\n function preferredInputType(format) {\n var ms = format.indexOf('%L') !== -1;\n if (ms) {\n return 'text';\n }\n var date = ['a', 'A', 'd', 'e', 'w', 'b', 'B', 'm', 'o', 'y', 'Y']\n .some(function (char) { return format.indexOf('%' + char) !== -1; });\n var time = ['H', 'k', 'I', 'l', 'M', 'S']\n .some(function (char) { return format.indexOf('%' + char) !== -1; });\n if (date && time) {\n return 'datetime-local';\n }\n if (date) {\n return 'date';\n }\n if (time) {\n return 'time';\n }\n return 'text';\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * The range selector.\n *\n * @private\n * @class\n * @name Highcharts.RangeSelector\n * @param {Highcharts.Chart} chart\n */\n var RangeSelector = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function RangeSelector(chart) {\n /* *\n *\n * Properties\n *\n * */\n this.buttons = void 0;\n this.buttonOptions = RangeSelector.prototype.defaultButtons;\n this.initialButtonGroupWidth = 0;\n this.options = void 0;\n this.chart = chart;\n this.init(chart);\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n RangeSelector.compose = function (AxisClass, ChartClass) {\n RangeSelectorComposition.compose(AxisClass, ChartClass, RangeSelector);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * The method to run when one of the buttons in the range selectors is\n * clicked\n *\n * @private\n * @function Highcharts.RangeSelector#clickButton\n * @param {number} i\n * The index of the button\n * @param {boolean} [redraw]\n */\n RangeSelector.prototype.clickButton = function (i, redraw) {\n var rangeSelector = this,\n chart = rangeSelector.chart,\n rangeOptions = rangeSelector.buttonOptions[i],\n baseAxis = chart.xAxis[0],\n unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || baseAxis || {},\n type = rangeOptions.type,\n dataGrouping = rangeOptions.dataGrouping;\n var dataMin = unionExtremes.dataMin,\n dataMax = unionExtremes.dataMax,\n newMin,\n newMax = baseAxis && Math.round(Math.min(baseAxis.max,\n pick(dataMax,\n baseAxis.max))), // #1568\n baseXAxisOptions,\n range = rangeOptions._range,\n rangeMin,\n minSetting,\n rangeSetting,\n ctx,\n ytdExtremes,\n addOffsetMin = true;\n // chart has no data, base series is removed\n if (dataMin === null || dataMax === null) {\n return;\n }\n // Set the fixed range before range is altered\n chart.fixedRange = range;\n rangeSelector.setSelected(i);\n // Apply dataGrouping associated to button\n if (dataGrouping) {\n this.forcedDataGrouping = true;\n Axis.prototype.setDataGrouping.call(baseAxis || { chart: this.chart }, dataGrouping, false);\n this.frozenStates = rangeOptions.preserveDataGrouping;\n }\n // Apply range\n if (type === 'month' || type === 'year') {\n if (!baseAxis) {\n // This is set to the user options and picked up later when the\n // axis is instantiated so that we know the min and max.\n range = rangeOptions;\n }\n else {\n ctx = {\n range: rangeOptions,\n max: newMax,\n chart: chart,\n dataMin: dataMin,\n dataMax: dataMax\n };\n newMin = baseAxis.minFromRange.call(ctx);\n if (isNumber(ctx.newMax)) {\n newMax = ctx.newMax;\n }\n // #15799: offsetMin is added in minFromRange so that it works\n // with pre-selected buttons as well\n addOffsetMin = false;\n }\n // Fixed times like minutes, hours, days\n }\n else if (range) {\n newMin = Math.max(newMax - range, dataMin);\n newMax = Math.min(newMin + range, dataMax);\n addOffsetMin = false;\n }\n else if (type === 'ytd') {\n // On user clicks on the buttons, or a delayed action running from\n // the beforeRender event (below), the baseAxis is defined.\n if (baseAxis) {\n // When \"ytd\" is the pre-selected button for the initial view,\n // its calculation is delayed and rerun in the beforeRender\n // event (below). When the series are initialized, but before\n // the chart is rendered, we have access to the xData array\n // (#942).\n if (typeof dataMax === 'undefined' ||\n typeof dataMin === 'undefined') {\n dataMin = Number.MAX_VALUE;\n dataMax = Number.MIN_VALUE;\n chart.series.forEach(function (series) {\n // reassign it to the last item\n var xData = series.xData;\n if (xData) {\n dataMin = Math.min(xData[0], dataMin);\n dataMax = Math.max(xData[xData.length - 1], dataMax);\n }\n });\n redraw = false;\n }\n ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin, chart.time.useUTC);\n newMin = rangeMin = ytdExtremes.min;\n newMax = ytdExtremes.max;\n // \"ytd\" is pre-selected. We don't yet have access to processed\n // point and extremes data (things like pointStart and pointInterval\n // are missing), so we delay the process (#942)\n }\n else {\n rangeSelector.deferredYTDClick = i;\n return;\n }\n }\n else if (type === 'all' && baseAxis) {\n // If the navigator exist and the axis range is declared reset that\n // range and from now on only use the range set by a user, #14742.\n if (chart.navigator && chart.navigator.baseSeries[0]) {\n chart.navigator.baseSeries[0].xAxis.options.range = void 0;\n }\n newMin = dataMin;\n newMax = dataMax;\n }\n if (addOffsetMin && rangeOptions._offsetMin && defined(newMin)) {\n newMin += rangeOptions._offsetMin;\n }\n if (rangeOptions._offsetMax && defined(newMax)) {\n newMax += rangeOptions._offsetMax;\n }\n if (this.dropdown) {\n this.dropdown.selectedIndex = i + 1;\n }\n // Update the chart\n if (!baseAxis) {\n // Axis not yet instanciated. Temporarily set min and range\n // options and remove them on chart load (#4317).\n baseXAxisOptions = splat(chart.options.xAxis)[0];\n rangeSetting = baseXAxisOptions.range;\n baseXAxisOptions.range = range;\n minSetting = baseXAxisOptions.min;\n baseXAxisOptions.min = rangeMin;\n addEvent(chart, 'load', function resetMinAndRange() {\n baseXAxisOptions.range = rangeSetting;\n baseXAxisOptions.min = minSetting;\n });\n }\n else {\n // Existing axis object. Set extremes after render time.\n baseAxis.setExtremes(newMin, newMax, pick(redraw, true), void 0, // auto animation\n {\n trigger: 'rangeSelectorButton',\n rangeSelectorButton: rangeOptions\n });\n }\n fireEvent(this, 'afterBtnClick');\n };\n /**\n * Set the selected option. This method only sets the internal flag, it\n * doesn't update the buttons or the actual zoomed range.\n *\n * @private\n * @function Highcharts.RangeSelector#setSelected\n * @param {number} [selected]\n */\n RangeSelector.prototype.setSelected = function (selected) {\n this.selected = this.options.selected = selected;\n };\n /**\n * Initialize the range selector\n *\n * @private\n * @function Highcharts.RangeSelector#init\n * @param {Highcharts.Chart} chart\n */\n RangeSelector.prototype.init = function (chart) {\n var rangeSelector = this,\n options = chart.options.rangeSelector,\n buttonOptions = (options.buttons || rangeSelector.defaultButtons.slice()),\n selectedOption = options.selected,\n blurInputs = function () {\n var minInput = rangeSelector.minInput,\n maxInput = rangeSelector.maxInput;\n // #3274 in some case blur is not defined\n if (minInput && (minInput.blur)) {\n fireEvent(minInput, 'blur');\n }\n if (maxInput && (maxInput.blur)) {\n fireEvent(maxInput, 'blur');\n }\n };\n rangeSelector.chart = chart;\n rangeSelector.options = options;\n rangeSelector.buttons = [];\n rangeSelector.buttonOptions = buttonOptions;\n this.eventsToUnbind = [];\n this.eventsToUnbind.push(addEvent(chart.container, 'mousedown', blurInputs));\n this.eventsToUnbind.push(addEvent(chart, 'resize', blurInputs));\n // Extend the buttonOptions with actual range\n buttonOptions.forEach(rangeSelector.computeButtonRange);\n // zoomed range based on a pre-selected button index\n if (typeof selectedOption !== 'undefined' &&\n buttonOptions[selectedOption]) {\n this.clickButton(selectedOption, false);\n }\n this.eventsToUnbind.push(addEvent(chart, 'load', function () {\n // If a data grouping is applied to the current button, release it\n // when extremes change\n if (chart.xAxis && chart.xAxis[0]) {\n addEvent(chart.xAxis[0], 'setExtremes', function (e) {\n if (this.max - this.min !==\n chart.fixedRange &&\n e.trigger !== 'rangeSelectorButton' &&\n e.trigger !== 'updatedData' &&\n rangeSelector.forcedDataGrouping &&\n !rangeSelector.frozenStates) {\n this.setDataGrouping(false, false);\n }\n });\n }\n }));\n };\n /**\n * Dynamically update the range selector buttons after a new range has been\n * set\n *\n * @private\n * @function Highcharts.RangeSelector#updateButtonStates\n */\n RangeSelector.prototype.updateButtonStates = function () {\n var rangeSelector = this,\n chart = this.chart,\n dropdown = this.dropdown,\n baseAxis = chart.xAxis[0],\n actualRange = Math.round(baseAxis.max - baseAxis.min),\n hasNoData = !baseAxis.hasVisibleSeries,\n day = 24 * 36e5, // A single day in milliseconds\n unionExtremes = (chart.scroller &&\n chart.scroller.getUnionExtremes()) || baseAxis,\n dataMin = unionExtremes.dataMin,\n dataMax = unionExtremes.dataMax,\n ytdExtremes = rangeSelector.getYTDExtremes(dataMax,\n dataMin,\n chart.time.useUTC),\n ytdMin = ytdExtremes.min,\n ytdMax = ytdExtremes.max,\n selected = rangeSelector.selected,\n allButtonsEnabled = rangeSelector.options.allButtonsEnabled,\n buttons = rangeSelector.buttons;\n var selectedExists = isNumber(selected);\n rangeSelector.buttonOptions.forEach(function (rangeOptions, i) {\n var range = rangeOptions._range,\n type = rangeOptions.type,\n count = rangeOptions.count || 1,\n button = buttons[i],\n offsetRange = rangeOptions._offsetMax -\n rangeOptions._offsetMin,\n isSelected = i === selected, \n // Disable buttons where the range exceeds what is allowed in\n // the current view\n isTooGreatRange = range >\n dataMax - dataMin, \n // Disable buttons where the range is smaller than the minimum\n // range\n isTooSmallRange = range < baseAxis.minRange;\n var state = 0, \n // Do not select the YTD button if not explicitly told so\n isYTDButNotSelected = false, \n // Disable the All button if we're already showing all\n isAllButAlreadyShowingAll = false,\n isSameRange = range === actualRange;\n // Months and years have a variable range so we check the extremes\n if ((type === 'month' || type === 'year') &&\n (actualRange + 36e5 >=\n { month: 28, year: 365 }[type] * day * count - offsetRange) &&\n (actualRange - 36e5 <=\n { month: 31, year: 366 }[type] * day * count + offsetRange)) {\n isSameRange = true;\n }\n else if (type === 'ytd') {\n isSameRange = (ytdMax - ytdMin + offsetRange) === actualRange;\n isYTDButNotSelected = !isSelected;\n }\n else if (type === 'all') {\n isSameRange = (baseAxis.max - baseAxis.min >=\n dataMax - dataMin);\n isAllButAlreadyShowingAll = (!isSelected &&\n selectedExists &&\n isSameRange);\n }\n // The new zoom area happens to match the range for a button - mark\n // it selected. This happens when scrolling across an ordinal gap.\n // It can be seen in the intraday demos when selecting 1h and scroll\n // across the night gap.\n var disable = (!allButtonsEnabled &&\n (isTooGreatRange ||\n isTooSmallRange ||\n isAllButAlreadyShowingAll ||\n hasNoData));\n var select = ((isSelected && isSameRange) ||\n (isSameRange && !selectedExists && !isYTDButNotSelected) ||\n (isSelected && rangeSelector.frozenStates));\n if (disable) {\n state = 3;\n }\n else if (select) {\n selectedExists = true; // Only one button can be selected\n state = 2;\n }\n // If state has changed, update the button\n if (button.state !== state) {\n button.setState(state);\n if (dropdown) {\n dropdown.options[i + 1].disabled = disable;\n if (state === 2) {\n dropdown.selectedIndex = i + 1;\n }\n }\n // Reset (#9209)\n if (state === 0 && selected === i) {\n rangeSelector.setSelected();\n }\n }\n });\n };\n /**\n * Compute and cache the range for an individual button\n *\n * @private\n * @function Highcharts.RangeSelector#computeButtonRange\n * @param {Highcharts.RangeSelectorButtonsOptions} rangeOptions\n */\n RangeSelector.prototype.computeButtonRange = function (rangeOptions) {\n var type = rangeOptions.type,\n count = rangeOptions.count || 1, \n // these time intervals have a fixed number of milliseconds, as\n // opposed to month, ytd and year\n fixedTimes = {\n millisecond: 1,\n second: 1000,\n minute: 60 * 1000,\n hour: 3600 * 1000,\n day: 24 * 3600 * 1000,\n week: 7 * 24 * 3600 * 1000\n };\n // Store the range on the button object\n if (fixedTimes[type]) {\n rangeOptions._range = fixedTimes[type] * count;\n }\n else if (type === 'month' || type === 'year') {\n rangeOptions._range = {\n month: 30,\n year: 365\n }[type] * 24 * 36e5 * count;\n }\n rangeOptions._offsetMin = pick(rangeOptions.offsetMin, 0);\n rangeOptions._offsetMax = pick(rangeOptions.offsetMax, 0);\n rangeOptions._range +=\n rangeOptions._offsetMax - rangeOptions._offsetMin;\n };\n /**\n * Get the unix timestamp of a HTML input for the dates\n *\n * @private\n * @function Highcharts.RangeSelector#getInputValue\n */\n RangeSelector.prototype.getInputValue = function (name) {\n var input = name === 'min' ? this.minInput : this.maxInput;\n var options = this.chart.options\n .rangeSelector;\n var time = this.chart.time;\n if (input) {\n return ((input.type === 'text' && options.inputDateParser) ||\n this.defaultInputDateParser)(input.value, time.useUTC, time);\n }\n return 0;\n };\n /**\n * Set the internal and displayed value of a HTML input for the dates\n *\n * @private\n * @function Highcharts.RangeSelector#setInputValue\n */\n RangeSelector.prototype.setInputValue = function (name, inputTime) {\n var options = this.options, time = this.chart.time, input = name === 'min' ? this.minInput : this.maxInput, dateBox = name === 'min' ? this.minDateBox : this.maxDateBox;\n if (input) {\n var hcTimeAttr = input.getAttribute('data-hc-time');\n var updatedTime = defined(hcTimeAttr) ? Number(hcTimeAttr) : void 0;\n if (defined(inputTime)) {\n var previousTime = updatedTime;\n if (defined(previousTime)) {\n input.setAttribute('data-hc-time-previous', previousTime);\n }\n input.setAttribute('data-hc-time', inputTime);\n updatedTime = inputTime;\n }\n input.value = time.dateFormat((this.inputTypeFormats[input.type] ||\n options.inputEditDateFormat), updatedTime);\n if (dateBox) {\n dateBox.attr({\n text: time.dateFormat(options.inputDateFormat, updatedTime)\n });\n }\n }\n };\n /**\n * Set the min and max value of a HTML input for the dates\n *\n * @private\n * @function Highcharts.RangeSelector#setInputExtremes\n */\n RangeSelector.prototype.setInputExtremes = function (name, min, max) {\n var input = name === 'min' ? this.minInput : this.maxInput;\n if (input) {\n var format = this.inputTypeFormats[input.type];\n var time = this.chart.time;\n if (format) {\n var newMin = time.dateFormat(format,\n min);\n if (input.min !== newMin) {\n input.min = newMin;\n }\n var newMax = time.dateFormat(format,\n max);\n if (input.max !== newMax) {\n input.max = newMax;\n }\n }\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#showInput\n * @param {string} name\n */\n RangeSelector.prototype.showInput = function (name) {\n var dateBox = name === 'min' ? this.minDateBox : this.maxDateBox;\n var input = name === 'min' ? this.minInput : this.maxInput;\n if (input && dateBox && this.inputGroup) {\n var isTextInput = input.type === 'text';\n var _a = this.inputGroup,\n translateX = _a.translateX,\n translateY = _a.translateY;\n var inputBoxWidth = this.options.inputBoxWidth;\n css(input, {\n width: isTextInput ?\n ((dateBox.width + (inputBoxWidth ? -2 : 20)) + 'px') :\n 'auto',\n height: isTextInput ? ((dateBox.height - 2) + 'px') : 'auto',\n border: '2px solid silver'\n });\n if (isTextInput && inputBoxWidth) {\n css(input, {\n left: (translateX + dateBox.x) + 'px',\n top: translateY + 'px'\n });\n // Inputs of types date, time or datetime-local should be centered\n // on top of the dateBox\n }\n else {\n css(input, {\n left: Math.min(Math.round(dateBox.x +\n translateX -\n (input.offsetWidth - dateBox.width) / 2), this.chart.chartWidth - input.offsetWidth) + 'px',\n top: (translateY - (input.offsetHeight - dateBox.height) / 2) + 'px'\n });\n }\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#hideInput\n * @param {string} name\n */\n RangeSelector.prototype.hideInput = function (name) {\n var input = name === 'min' ? this.minInput : this.maxInput;\n if (input) {\n css(input, {\n top: '-9999em',\n border: 0,\n width: '1px',\n height: '1px'\n });\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#defaultInputDateParser\n */\n RangeSelector.prototype.defaultInputDateParser = function (inputDate, useUTC, time) {\n var hasTimezone = function (str) {\n return str.length > 6 &&\n (str.lastIndexOf('-') === str.length - 6 ||\n str.lastIndexOf('+') === str.length - 6);\n };\n var input = inputDate.split('/').join('-').split(' ').join('T');\n if (input.indexOf('T') === -1) {\n input += 'T00:00';\n }\n if (useUTC) {\n input += 'Z';\n }\n else if (H.isSafari && !hasTimezone(input)) {\n var offset = new Date(input).getTimezoneOffset() / 60;\n input += offset <= 0 ? \"+\".concat(pad(-offset), \":00\") : \"-\".concat(pad(offset), \":00\");\n }\n var date = Date.parse(input);\n // If the value isn't parsed directly to a value by the\n // browser's Date.parse method, like YYYY-MM-DD in IE8, try\n // parsing it a different way\n if (!isNumber(date)) {\n var parts = inputDate.split('-');\n date = Date.UTC(pInt(parts[0]), pInt(parts[1]) - 1, pInt(parts[2]));\n }\n if (time && useUTC && isNumber(date)) {\n date += time.getTimezoneOffset(date);\n }\n return date;\n };\n /**\n * Draw either the 'from' or the 'to' HTML input box of the range selector\n *\n * @private\n * @function Highcharts.RangeSelector#drawInput\n */\n RangeSelector.prototype.drawInput = function (name) {\n var _a = this,\n chart = _a.chart,\n div = _a.div,\n inputGroup = _a.inputGroup;\n var rangeSelector = this,\n chartStyle = chart.renderer.style || {},\n renderer = chart.renderer,\n options = chart.options.rangeSelector,\n lang = defaultOptions.lang,\n isMin = name === 'min';\n /**\n * @private\n */\n function updateExtremes() {\n var maxInput = rangeSelector.maxInput,\n minInput = rangeSelector.minInput,\n chartAxis = chart.xAxis[0],\n dataAxis = chart.scroller && chart.scroller.xAxis ?\n chart.scroller.xAxis :\n chartAxis,\n dataMin = dataAxis.dataMin,\n dataMax = dataAxis.dataMax;\n var value = rangeSelector.getInputValue(name);\n if (value !== Number(input.getAttribute('data-hc-time-previous')) &&\n isNumber(value)) {\n input.setAttribute('data-hc-time-previous', value);\n // Validate the extremes. If it goes beyound the data min or\n // max, use the actual data extreme (#2438).\n if (isMin && maxInput && isNumber(dataMin)) {\n if (value > Number(maxInput.getAttribute('data-hc-time'))) {\n value = void 0;\n }\n else if (value < dataMin) {\n value = dataMin;\n }\n }\n else if (minInput && isNumber(dataMax)) {\n if (value < Number(minInput.getAttribute('data-hc-time'))) {\n value = void 0;\n }\n else if (value > dataMax) {\n value = dataMax;\n }\n }\n // Set the extremes\n if (typeof value !== 'undefined') { // @todo typof undefined\n chartAxis.setExtremes(isMin ? value : chartAxis.min, isMin ? chartAxis.max : value, void 0, void 0, { trigger: 'rangeSelectorInput' });\n }\n }\n }\n // Create the text label\n var text = lang[isMin ? 'rangeSelectorFrom' : 'rangeSelectorTo'] || '';\n var label = renderer\n .label(text, 0)\n .addClass('highcharts-range-label')\n .attr({\n padding: text ? 2 : 0,\n height: text ? options.inputBoxHeight : 0\n })\n .add(inputGroup);\n // Create an SVG label that shows updated date ranges and and records\n // click events that bring in the HTML input.\n var dateBox = renderer\n .label('', 0)\n .addClass('highcharts-range-input')\n .attr({\n padding: 2,\n width: options.inputBoxWidth,\n height: options.inputBoxHeight,\n 'text-align': 'center'\n })\n .on('click',\n function () {\n // If it is already focused, the onfocus event doesn't fire\n // (#3713)\n rangeSelector.showInput(name);\n rangeSelector[name + 'Input'].focus();\n });\n if (!chart.styledMode) {\n dateBox.attr({\n stroke: options.inputBoxBorderColor,\n 'stroke-width': 1\n });\n }\n dateBox.add(inputGroup);\n // Create the HTML input element. This is rendered as 1x1 pixel then set\n // to the right size when focused.\n var input = createElement('input', {\n name: name,\n className: 'highcharts-range-selector'\n },\n void 0,\n div);\n // #14788: Setting input.type to an unsupported type throws in IE, so\n // we need to use setAttribute instead\n input.setAttribute('type', preferredInputType(options.inputDateFormat || '%b %e, %Y'));\n if (!chart.styledMode) {\n // Styles\n label.css(merge(chartStyle, options.labelStyle));\n dateBox.css(merge({\n color: \"#333333\" /* Palette.neutralColor80 */\n }, chartStyle, options.inputStyle));\n css(input, extend({\n position: 'absolute',\n border: 0,\n boxShadow: '0 0 15px rgba(0,0,0,0.3)',\n width: '1px',\n height: '1px',\n padding: 0,\n textAlign: 'center',\n fontSize: chartStyle.fontSize,\n fontFamily: chartStyle.fontFamily,\n top: '-9999em' // #4798\n }, options.inputStyle));\n }\n // Blow up the input box\n input.onfocus = function () {\n rangeSelector.showInput(name);\n };\n // Hide away the input box\n input.onblur = function () {\n // update extermes only when inputs are active\n if (input === H.doc.activeElement) { // Only when focused\n // Update also when no `change` event is triggered, like when\n // clicking inside the SVG (#4710)\n updateExtremes();\n }\n // #10404 - move hide and blur outside focus\n rangeSelector.hideInput(name);\n rangeSelector.setInputValue(name);\n input.blur(); // #4606\n };\n var keyDown = false;\n // handle changes in the input boxes\n input.onchange = function () {\n // Update extremes and blur input when clicking date input calendar\n if (!keyDown) {\n updateExtremes();\n rangeSelector.hideInput(name);\n input.blur();\n }\n };\n input.onkeypress = function (event) {\n // IE does not fire onchange on enter\n if (event.keyCode === 13) {\n updateExtremes();\n }\n };\n input.onkeydown = function (event) {\n keyDown = true;\n // Arrow keys\n if (event.keyCode === 38 || event.keyCode === 40) {\n updateExtremes();\n }\n };\n input.onkeyup = function () {\n keyDown = false;\n };\n return { dateBox: dateBox, input: input, label: label };\n };\n /**\n * Get the position of the range selector buttons and inputs. This can be\n * overridden from outside for custom positioning.\n *\n * @private\n * @function Highcharts.RangeSelector#getPosition\n */\n RangeSelector.prototype.getPosition = function () {\n var chart = this.chart,\n options = chart.options.rangeSelector,\n top = options.verticalAlign === 'top' ?\n chart.plotTop - chart.axisOffset[0] :\n 0; // set offset only for varticalAlign top\n return {\n buttonTop: top + options.buttonPosition.y,\n inputTop: top + options.inputPosition.y - 10\n };\n };\n /**\n * Get the extremes of YTD. Will choose dataMax if its value is lower than\n * the current timestamp. Will choose dataMin if its value is higher than\n * the timestamp for the start of current year.\n *\n * @private\n * @function Highcharts.RangeSelector#getYTDExtremes\n * @return {*}\n * Returns min and max for the YTD\n */\n RangeSelector.prototype.getYTDExtremes = function (dataMax, dataMin, useUTC) {\n var time = this.chart.time,\n now = new time.Date(dataMax),\n year = time.get('FullYear',\n now),\n startOfYear = useUTC ?\n time.Date.UTC(year, 0, 1) : // eslint-disable-line new-cap\n +new time.Date(year, 0, 1),\n min = Math.max(dataMin,\n startOfYear),\n ts = now.getTime();\n return {\n max: Math.min(dataMax || ts, ts),\n min: min\n };\n };\n /**\n * Render the range selector including the buttons and the inputs. The first\n * time render is called, the elements are created and positioned. On\n * subsequent calls, they are moved and updated.\n *\n * @private\n * @function Highcharts.RangeSelector#render\n * @param {number} [min]\n * X axis minimum\n * @param {number} [max]\n * X axis maximum\n */\n RangeSelector.prototype.render = function (min, max) {\n var chart = this.chart,\n renderer = chart.renderer,\n container = chart.container,\n chartOptions = chart.options,\n options = chartOptions.rangeSelector, \n // Place inputs above the container\n inputsZIndex = pick(chartOptions.chart.style &&\n chartOptions.chart.style.zIndex, 0) + 1,\n inputEnabled = options.inputEnabled,\n rendered = this.rendered;\n if (options.enabled === false) {\n return;\n }\n // create the elements\n if (!rendered) {\n this.group = renderer.g('range-selector-group')\n .attr({\n zIndex: 7\n })\n .add();\n this.div = createElement('div', void 0, {\n position: 'relative',\n height: 0,\n zIndex: inputsZIndex\n });\n if (this.buttonOptions.length) {\n this.renderButtons();\n }\n // First create a wrapper outside the container in order to make\n // the inputs work and make export correct\n if (container.parentNode) {\n container.parentNode.insertBefore(this.div, container);\n }\n if (inputEnabled) {\n // Create the group to keep the inputs\n this.inputGroup = renderer.g('input-group').add(this.group);\n var minElems = this.drawInput('min');\n this.minDateBox = minElems.dateBox;\n this.minLabel = minElems.label;\n this.minInput = minElems.input;\n var maxElems = this.drawInput('max');\n this.maxDateBox = maxElems.dateBox;\n this.maxLabel = maxElems.label;\n this.maxInput = maxElems.input;\n }\n }\n if (inputEnabled) {\n // Set or reset the input values\n this.setInputValue('min', min);\n this.setInputValue('max', max);\n var unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || chart.xAxis[0] || {};\n if (defined(unionExtremes.dataMin) &&\n defined(unionExtremes.dataMax)) {\n var minRange = chart.xAxis[0].minRange || 0;\n this.setInputExtremes('min', unionExtremes.dataMin, Math.min(unionExtremes.dataMax, this.getInputValue('max')) - minRange);\n this.setInputExtremes('max', Math.max(unionExtremes.dataMin, this.getInputValue('min')) + minRange, unionExtremes.dataMax);\n }\n // Reflow\n if (this.inputGroup) {\n var x_1 = 0;\n [\n this.minLabel,\n this.minDateBox,\n this.maxLabel,\n this.maxDateBox\n ].forEach(function (label) {\n if (label) {\n var width = label.getBBox().width;\n if (width) {\n label.attr({ x: x_1 });\n x_1 += width + options.inputSpacing;\n }\n }\n });\n }\n }\n this.alignElements();\n this.rendered = true;\n };\n /**\n * Render the range buttons. This only runs the first time, later the\n * positioning is laid out in alignElements.\n *\n * @private\n * @function Highcharts.RangeSelector#renderButtons\n */\n RangeSelector.prototype.renderButtons = function () {\n var _this = this;\n var _a = this,\n buttons = _a.buttons,\n chart = _a.chart,\n options = _a.options;\n var lang = defaultOptions.lang;\n var renderer = chart.renderer;\n var buttonTheme = merge(options.buttonTheme);\n var states = buttonTheme && buttonTheme.states;\n // Prevent the button from resetting the width when the button state\n // changes since we need more control over the width when collapsing\n // the buttons\n var width = buttonTheme.width || 28;\n delete buttonTheme.width;\n delete buttonTheme.states;\n this.buttonGroup = renderer.g('range-selector-buttons').add(this.group);\n var dropdown = this.dropdown = createElement('select',\n void 0, {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n border: 0,\n top: '-9999em',\n cursor: 'pointer',\n opacity: 0.0001\n },\n this.div);\n // Prevent page zoom on iPhone\n addEvent(dropdown, 'touchstart', function () {\n dropdown.style.fontSize = '16px';\n });\n // Forward events from select to button\n [\n [H.isMS ? 'mouseover' : 'mouseenter'],\n [H.isMS ? 'mouseout' : 'mouseleave'],\n ['change', 'click']\n ].forEach(function (_a) {\n var from = _a[0],\n to = _a[1];\n addEvent(dropdown, from, function () {\n var button = buttons[_this.currentButtonIndex()];\n if (button) {\n fireEvent(button.element, to || from);\n }\n });\n });\n this.zoomText = renderer\n .label((lang && lang.rangeSelectorZoom) || '', 0)\n .attr({\n padding: options.buttonTheme.padding,\n height: options.buttonTheme.height,\n paddingLeft: 0,\n paddingRight: 0\n })\n .add(this.buttonGroup);\n if (!this.chart.styledMode) {\n this.zoomText.css(options.labelStyle);\n buttonTheme['stroke-width'] = pick(buttonTheme['stroke-width'], 0);\n }\n createElement('option', {\n textContent: this.zoomText.textStr,\n disabled: true\n }, void 0, dropdown);\n this.buttonOptions.forEach(function (rangeOptions, i) {\n createElement('option', {\n textContent: rangeOptions.title || rangeOptions.text\n }, void 0, dropdown);\n buttons[i] = renderer\n .button(rangeOptions.text, 0, 0, function (e) {\n // extract events from button object and call\n var buttonEvents = (rangeOptions.events && rangeOptions.events.click);\n var callDefaultEvent;\n if (buttonEvents) {\n callDefaultEvent =\n buttonEvents.call(rangeOptions, e);\n }\n if (callDefaultEvent !== false) {\n _this.clickButton(i);\n }\n _this.isActive = true;\n }, buttonTheme, states && states.hover, states && states.select, states && states.disabled)\n .attr({\n 'text-align': 'center',\n width: width\n })\n .add(_this.buttonGroup);\n if (rangeOptions.title) {\n buttons[i].attr('title', rangeOptions.title);\n }\n });\n };\n /**\n * Align the elements horizontally and vertically.\n *\n * @private\n * @function Highcharts.RangeSelector#alignElements\n */\n RangeSelector.prototype.alignElements = function () {\n var _this = this;\n var _a = this,\n buttonGroup = _a.buttonGroup,\n buttons = _a.buttons,\n chart = _a.chart,\n group = _a.group,\n inputGroup = _a.inputGroup,\n options = _a.options,\n zoomText = _a.zoomText;\n var chartOptions = chart.options;\n var navButtonOptions = (chartOptions.exporting &&\n chartOptions.exporting.enabled !== false &&\n chartOptions.navigation &&\n chartOptions.navigation.buttonOptions);\n var buttonPosition = options.buttonPosition,\n inputPosition = options.inputPosition,\n verticalAlign = options.verticalAlign;\n // Get the X offset required to avoid overlapping with the exporting\n // button. This is is used both by the buttonGroup and the inputGroup.\n var getXOffsetForExportButton = function (group,\n position) {\n if (navButtonOptions &&\n _this.titleCollision(chart) &&\n verticalAlign === 'top' &&\n position.align === 'right' && ((position.y -\n group.getBBox().height - 12) <\n ((navButtonOptions.y || 0) +\n (navButtonOptions.height || 0) +\n chart.spacing[0]))) {\n return -40;\n }\n return 0;\n };\n var plotLeft = chart.plotLeft;\n if (group && buttonPosition && inputPosition) {\n var translateX = buttonPosition.x - chart.spacing[3];\n if (buttonGroup) {\n this.positionButtons();\n if (!this.initialButtonGroupWidth) {\n var width_1 = 0;\n if (zoomText) {\n width_1 += zoomText.getBBox().width + 5;\n }\n buttons.forEach(function (button, i) {\n width_1 += button.width;\n if (i !== buttons.length - 1) {\n width_1 += options.buttonSpacing;\n }\n });\n this.initialButtonGroupWidth = width_1;\n }\n plotLeft -= chart.spacing[3];\n this.updateButtonStates();\n // Detect collision between button group and exporting\n var xOffsetForExportButton_1 = getXOffsetForExportButton(buttonGroup,\n buttonPosition);\n this.alignButtonGroup(xOffsetForExportButton_1);\n // Skip animation\n group.placed = buttonGroup.placed = chart.hasLoaded;\n }\n var xOffsetForExportButton = 0;\n if (inputGroup) {\n // Detect collision between the input group and exporting button\n xOffsetForExportButton = getXOffsetForExportButton(inputGroup, inputPosition);\n if (inputPosition.align === 'left') {\n translateX = plotLeft;\n }\n else if (inputPosition.align === 'right') {\n translateX = -Math.max(chart.axisOffset[1], -xOffsetForExportButton);\n }\n // Update the alignment to the updated spacing box\n inputGroup.align({\n y: inputPosition.y,\n width: inputGroup.getBBox().width,\n align: inputPosition.align,\n // fix wrong getBBox() value on right align\n x: inputPosition.x + translateX - 2\n }, true, chart.spacingBox);\n // Skip animation\n inputGroup.placed = chart.hasLoaded;\n }\n this.handleCollision(xOffsetForExportButton);\n // Vertical align\n group.align({\n verticalAlign: verticalAlign\n }, true, chart.spacingBox);\n var alignTranslateY = group.alignAttr.translateY;\n // Set position\n var groupHeight = group.getBBox().height + 20; // # 20 padding\n var translateY = 0;\n // Calculate bottom position\n if (verticalAlign === 'bottom') {\n var legendOptions = chart.legend && chart.legend.options;\n var legendHeight = (legendOptions &&\n legendOptions.verticalAlign === 'bottom' &&\n legendOptions.enabled &&\n !legendOptions.floating ?\n (chart.legend.legendHeight +\n pick(legendOptions.margin, 10)) :\n 0);\n groupHeight = groupHeight + legendHeight - 20;\n translateY = (alignTranslateY -\n groupHeight -\n (options.floating ? 0 : options.y) -\n (chart.titleOffset ? chart.titleOffset[2] : 0) -\n 10 // 10 spacing\n );\n }\n if (verticalAlign === 'top') {\n if (options.floating) {\n translateY = 0;\n }\n if (chart.titleOffset && chart.titleOffset[0]) {\n translateY = chart.titleOffset[0];\n }\n translateY += ((chart.margin[0] - chart.spacing[0]) || 0);\n }\n else if (verticalAlign === 'middle') {\n if (inputPosition.y === buttonPosition.y) {\n translateY = alignTranslateY;\n }\n else if (inputPosition.y || buttonPosition.y) {\n if (inputPosition.y < 0 ||\n buttonPosition.y < 0) {\n translateY -= Math.min(inputPosition.y, buttonPosition.y);\n }\n else {\n translateY = alignTranslateY - groupHeight;\n }\n }\n }\n group.translate(options.x, options.y + Math.floor(translateY));\n // Translate HTML inputs\n var _b = this,\n minInput = _b.minInput,\n maxInput = _b.maxInput,\n dropdown = _b.dropdown;\n if (options.inputEnabled && minInput && maxInput) {\n minInput.style.marginTop = group.translateY + 'px';\n maxInput.style.marginTop = group.translateY + 'px';\n }\n if (dropdown) {\n dropdown.style.marginTop = group.translateY + 'px';\n }\n }\n };\n /**\n * Align the button group horizontally and vertically.\n *\n * @private\n * @function Highcharts.RangeSelector#alignButtonGroup\n * @param {number} xOffsetForExportButton\n * @param {number} [width]\n */\n RangeSelector.prototype.alignButtonGroup = function (xOffsetForExportButton, width) {\n var _a = this,\n chart = _a.chart,\n options = _a.options,\n buttonGroup = _a.buttonGroup,\n buttons = _a.buttons;\n var buttonPosition = options.buttonPosition;\n var plotLeft = chart.plotLeft - chart.spacing[3];\n var translateX = buttonPosition.x - chart.spacing[3];\n if (buttonPosition.align === 'right') {\n translateX += xOffsetForExportButton - plotLeft; // #13014\n }\n else if (buttonPosition.align === 'center') {\n translateX -= plotLeft / 2;\n }\n if (buttonGroup) {\n // Align button group\n buttonGroup.align({\n y: buttonPosition.y,\n width: pick(width, this.initialButtonGroupWidth),\n align: buttonPosition.align,\n x: translateX\n }, true, chart.spacingBox);\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#positionButtons\n */\n RangeSelector.prototype.positionButtons = function () {\n var _a = this,\n buttons = _a.buttons,\n chart = _a.chart,\n options = _a.options,\n zoomText = _a.zoomText;\n var verb = chart.hasLoaded ? 'animate' : 'attr';\n var buttonPosition = options.buttonPosition;\n var plotLeft = chart.plotLeft;\n var buttonLeft = plotLeft;\n if (zoomText && zoomText.visibility !== 'hidden') {\n // #8769, allow dynamically updating margins\n zoomText[verb]({\n x: pick(plotLeft + buttonPosition.x, plotLeft)\n });\n // Button start position\n buttonLeft += buttonPosition.x +\n zoomText.getBBox().width + 5;\n }\n for (var i = 0, iEnd = this.buttonOptions.length; i < iEnd; ++i) {\n if (buttons[i].visibility !== 'hidden') {\n buttons[i][verb]({ x: buttonLeft });\n // increase button position for the next button\n buttonLeft += buttons[i].width + options.buttonSpacing;\n }\n else {\n buttons[i][verb]({ x: plotLeft });\n }\n }\n };\n /**\n * Handle collision between the button group and the input group\n *\n * @private\n * @function Highcharts.RangeSelector#handleCollision\n *\n * @param {number} xOffsetForExportButton\n * The X offset of the group required to make room for the\n * exporting button\n */\n RangeSelector.prototype.handleCollision = function (xOffsetForExportButton) {\n var _this = this;\n var _a = this,\n chart = _a.chart,\n buttonGroup = _a.buttonGroup,\n inputGroup = _a.inputGroup;\n var _b = this.options,\n buttonPosition = _b.buttonPosition,\n dropdown = _b.dropdown,\n inputPosition = _b.inputPosition;\n var maxButtonWidth = function () {\n var buttonWidth = 0;\n _this.buttons.forEach(function (button) {\n var bBox = button.getBBox();\n if (bBox.width > buttonWidth) {\n buttonWidth = bBox.width;\n }\n });\n return buttonWidth;\n };\n var groupsOverlap = function (buttonGroupWidth) {\n if (inputGroup && buttonGroup) {\n var inputGroupX = (inputGroup.alignAttr.translateX +\n inputGroup.alignOptions.x -\n xOffsetForExportButton +\n // getBBox for detecing left margin\n inputGroup.getBBox().x +\n // 2px padding to not overlap input and label\n 2);\n var inputGroupWidth = inputGroup.alignOptions.width;\n var buttonGroupX = buttonGroup.alignAttr.translateX +\n buttonGroup.getBBox().x;\n return (buttonGroupX + buttonGroupWidth > inputGroupX) &&\n (inputGroupX + inputGroupWidth > buttonGroupX) &&\n (buttonPosition.y <\n (inputPosition.y +\n inputGroup.getBBox().height));\n }\n return false;\n };\n var moveInputsDown = function () {\n if (inputGroup && buttonGroup) {\n inputGroup.attr({\n translateX: inputGroup.alignAttr.translateX + (chart.axisOffset[1] >= -xOffsetForExportButton ?\n 0 :\n -xOffsetForExportButton),\n translateY: inputGroup.alignAttr.translateY +\n buttonGroup.getBBox().height + 10\n });\n }\n };\n if (buttonGroup) {\n if (dropdown === 'always') {\n this.collapseButtons(xOffsetForExportButton);\n if (groupsOverlap(maxButtonWidth())) {\n // Move the inputs down if there is still a collision\n // after collapsing the buttons\n moveInputsDown();\n }\n return;\n }\n if (dropdown === 'never') {\n this.expandButtons();\n }\n }\n // Detect collision\n if (inputGroup && buttonGroup) {\n if ((inputPosition.align === buttonPosition.align) ||\n // 20 is minimal spacing between elements\n groupsOverlap(this.initialButtonGroupWidth + 20)) {\n if (dropdown === 'responsive') {\n this.collapseButtons(xOffsetForExportButton);\n if (groupsOverlap(maxButtonWidth())) {\n moveInputsDown();\n }\n }\n else {\n moveInputsDown();\n }\n }\n else if (dropdown === 'responsive') {\n this.expandButtons();\n }\n }\n else if (buttonGroup && dropdown === 'responsive') {\n if (this.initialButtonGroupWidth > chart.plotWidth) {\n this.collapseButtons(xOffsetForExportButton);\n }\n else {\n this.expandButtons();\n }\n }\n };\n /**\n * Collapse the buttons and put the select element on top.\n *\n * @private\n * @function Highcharts.RangeSelector#collapseButtons\n * @param {number} xOffsetForExportButton\n */\n RangeSelector.prototype.collapseButtons = function (xOffsetForExportButton) {\n var _a = this,\n buttons = _a.buttons,\n buttonOptions = _a.buttonOptions,\n chart = _a.chart,\n dropdown = _a.dropdown,\n options = _a.options,\n zoomText = _a.zoomText;\n var userButtonTheme = (chart.userOptions.rangeSelector &&\n chart.userOptions.rangeSelector.buttonTheme) || {};\n var getAttribs = function (text) { return ({\n text: text ? \"\" + text + \" \\u25BE\" : '▾',\n width: 'auto',\n paddingLeft: pick(options.buttonTheme.paddingLeft,\n userButtonTheme.padding, 8),\n paddingRight: pick(options.buttonTheme.paddingRight,\n userButtonTheme.padding, 8)\n }); };\n if (zoomText) {\n zoomText.hide();\n }\n var hasActiveButton = false;\n buttonOptions.forEach(function (rangeOptions, i) {\n var button = buttons[i];\n if (button.state !== 2) {\n button.hide();\n }\n else {\n button.show();\n button.attr(getAttribs(rangeOptions.text));\n hasActiveButton = true;\n }\n });\n if (!hasActiveButton) {\n if (dropdown) {\n dropdown.selectedIndex = 0;\n }\n buttons[0].show();\n buttons[0].attr(getAttribs(this.zoomText && this.zoomText.textStr));\n }\n var align = options.buttonPosition.align;\n this.positionButtons();\n if (align === 'right' || align === 'center') {\n this.alignButtonGroup(xOffsetForExportButton, buttons[this.currentButtonIndex()].getBBox().width);\n }\n this.showDropdown();\n };\n /**\n * Show all the buttons and hide the select element.\n *\n * @private\n * @function Highcharts.RangeSelector#expandButtons\n */\n RangeSelector.prototype.expandButtons = function () {\n var _a = this,\n buttons = _a.buttons,\n buttonOptions = _a.buttonOptions,\n options = _a.options,\n zoomText = _a.zoomText;\n this.hideDropdown();\n if (zoomText) {\n zoomText.show();\n }\n buttonOptions.forEach(function (rangeOptions, i) {\n var button = buttons[i];\n button.show();\n button.attr({\n text: rangeOptions.text,\n width: options.buttonTheme.width || 28,\n paddingLeft: pick(options.buttonTheme.paddingLeft, 'unset'),\n paddingRight: pick(options.buttonTheme.paddingRight, 'unset')\n });\n if (button.state < 2) {\n button.setState(0);\n }\n });\n this.positionButtons();\n };\n /**\n * Get the index of the visible button when the buttons are collapsed.\n *\n * @private\n * @function Highcharts.RangeSelector#currentButtonIndex\n */\n RangeSelector.prototype.currentButtonIndex = function () {\n var dropdown = this.dropdown;\n if (dropdown && dropdown.selectedIndex > 0) {\n return dropdown.selectedIndex - 1;\n }\n return 0;\n };\n /**\n * Position the select element on top of the button.\n *\n * @private\n * @function Highcharts.RangeSelector#showDropdown\n */\n RangeSelector.prototype.showDropdown = function () {\n var _a = this,\n buttonGroup = _a.buttonGroup,\n buttons = _a.buttons,\n chart = _a.chart,\n dropdown = _a.dropdown;\n if (buttonGroup && dropdown) {\n var translateX = buttonGroup.translateX,\n translateY = buttonGroup.translateY;\n var bBox = buttons[this.currentButtonIndex()].getBBox();\n css(dropdown, {\n left: (chart.plotLeft + translateX) + 'px',\n top: (translateY + 0.5) + 'px',\n width: bBox.width + 'px',\n height: bBox.height + 'px'\n });\n this.hasVisibleDropdown = true;\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#hideDropdown\n */\n RangeSelector.prototype.hideDropdown = function () {\n var dropdown = this.dropdown;\n if (dropdown) {\n css(dropdown, {\n top: '-9999em',\n width: '1px',\n height: '1px'\n });\n this.hasVisibleDropdown = false;\n }\n };\n /**\n * Extracts height of range selector\n *\n * @private\n * @function Highcharts.RangeSelector#getHeight\n * @return {number}\n * Returns rangeSelector height\n */\n RangeSelector.prototype.getHeight = function () {\n var rangeSelector = this,\n options = rangeSelector.options,\n rangeSelectorGroup = rangeSelector.group,\n inputPosition = options.inputPosition,\n buttonPosition = options.buttonPosition,\n yPosition = options.y,\n buttonPositionY = buttonPosition.y,\n inputPositionY = inputPosition.y;\n var rangeSelectorHeight = 0;\n if (options.height) {\n return options.height;\n }\n // Align the elements before we read the height in case we're switching\n // between wrapped and non-wrapped layout\n this.alignElements();\n rangeSelectorHeight = rangeSelectorGroup ?\n // 13px to keep back compatibility\n (rangeSelectorGroup.getBBox(true).height) + 13 +\n yPosition :\n 0;\n var minPosition = Math.min(inputPositionY,\n buttonPositionY);\n if ((inputPositionY < 0 && buttonPositionY < 0) ||\n (inputPositionY > 0 && buttonPositionY > 0)) {\n rangeSelectorHeight += Math.abs(minPosition);\n }\n return rangeSelectorHeight;\n };\n /**\n * Detect collision with title or subtitle\n *\n * @private\n * @function Highcharts.RangeSelector#titleCollision\n * @return {boolean}\n * Returns collision status\n */\n RangeSelector.prototype.titleCollision = function (chart) {\n return !(chart.options.title.text ||\n chart.options.subtitle.text);\n };\n /**\n * Update the range selector with new options\n *\n * @private\n * @function Highcharts.RangeSelector#update\n * @param {Highcharts.RangeSelectorOptions} options\n */\n RangeSelector.prototype.update = function (options) {\n var chart = this.chart;\n merge(true, chart.options.rangeSelector, options);\n this.destroy();\n this.init(chart);\n this.render();\n };\n /**\n * Destroys allocated elements.\n *\n * @private\n * @function Highcharts.RangeSelector#destroy\n */\n RangeSelector.prototype.destroy = function () {\n var rSelector = this,\n minInput = rSelector.minInput,\n maxInput = rSelector.maxInput;\n if (rSelector.eventsToUnbind) {\n rSelector.eventsToUnbind.forEach(function (unbind) { return unbind(); });\n rSelector.eventsToUnbind = void 0;\n }\n // Destroy elements in collections\n destroyObjectProperties(rSelector.buttons);\n // Clear input element events\n if (minInput) {\n minInput.onfocus = minInput.onblur = minInput.onchange = null;\n }\n if (maxInput) {\n maxInput.onfocus = maxInput.onblur = maxInput.onchange = null;\n }\n // Destroy HTML and SVG elements\n objectEach(rSelector, function (val, key) {\n if (val && key !== 'chart') {\n if (val instanceof SVGElement) {\n // SVGElement\n val.destroy();\n }\n else if (val instanceof window.HTMLElement) {\n // HTML element\n discardElement(val);\n }\n }\n if (val !== RangeSelector.prototype[key]) {\n rSelector[key] = null;\n }\n }, this);\n };\n return RangeSelector;\n }());\n extend(RangeSelector.prototype, {\n /**\n * The default buttons for pre-selecting time frames.\n * @private\n */\n defaultButtons: [{\n type: 'month',\n count: 1,\n text: '1m',\n title: 'View 1 month'\n }, {\n type: 'month',\n count: 3,\n text: '3m',\n title: 'View 3 months'\n }, {\n type: 'month',\n count: 6,\n text: '6m',\n title: 'View 6 months'\n }, {\n type: 'ytd',\n text: 'YTD',\n title: 'View year to date'\n }, {\n type: 'year',\n count: 1,\n text: '1y',\n title: 'View 1 year'\n }, {\n type: 'all',\n text: 'All',\n title: 'View all'\n }],\n /**\n * The date formats to use when setting min, max and value on date inputs.\n * @private\n */\n inputTypeFormats: {\n 'datetime-local': '%Y-%m-%dT%H:%M:%S',\n 'date': '%Y-%m-%d',\n 'time': '%H:%M:%S'\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Define the time span for the button\n *\n * @typedef {\"all\"|\"day\"|\"hour\"|\"millisecond\"|\"minute\"|\"month\"|\"second\"|\"week\"|\"year\"|\"ytd\"} Highcharts.RangeSelectorButtonTypeValue\n */\n /**\n * Callback function to react on button clicks.\n *\n * @callback Highcharts.RangeSelectorClickCallbackFunction\n *\n * @param {global.Event} e\n * Event arguments.\n *\n * @param {boolean|undefined}\n * Return false to cancel the default button event.\n */\n /**\n * Callback function to parse values entered in the input boxes and return a\n * valid JavaScript time as milliseconds since 1970.\n *\n * @callback Highcharts.RangeSelectorParseCallbackFunction\n *\n * @param {string} value\n * Input value to parse.\n *\n * @return {number}\n * Parsed JavaScript time value.\n */\n (''); // keeps doclets above in JS file\n\n return RangeSelector;\n });\n _registerModule(_modules, 'Core/Axis/OrdinalAxis.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (Axis, H, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n css = U.css,\n defined = U.defined,\n error = U.error,\n pick = U.pick,\n timeUnits = U.timeUnits;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* eslint-disable valid-jsdoc */\n /* *\n *\n * Composition\n *\n * */\n /**\n * Extends the axis with ordinal support.\n * @private\n */\n var OrdinalAxis;\n (function (OrdinalAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends the axis with ordinal support.\n *\n * @private\n *\n * @param AxisClass\n * Axis class to extend.\n *\n * @param ChartClass\n * Chart class to use.\n *\n * @param SeriesClass\n * Series class to use.\n */\n function compose(AxisClass, SeriesClass, ChartClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n var axisProto = AxisClass.prototype;\n axisProto.getTimeTicks = getTimeTicks;\n axisProto.index2val = index2val;\n axisProto.lin2val = lin2val;\n axisProto.val2lin = val2lin;\n // Record this to prevent overwriting by broken-axis module (#5979)\n axisProto.ordinal2lin = axisProto.val2lin;\n addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n addEvent(AxisClass, 'foundExtremes', onAxisFoundExtremes);\n addEvent(AxisClass, 'afterSetScale', onAxisAfterSetScale);\n addEvent(AxisClass, 'initialAxisTranslation', onAxisInitialAxisTranslation);\n }\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n addEvent(ChartClass, 'pan', onChartPan);\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n addEvent(SeriesClass, 'updatedData', onSeriesUpdatedData);\n }\n /* eslint-enable no-invalid-this */\n return AxisClass;\n }\n OrdinalAxis.compose = compose;\n /**\n * In an ordinal axis, there might be areas with dense consentrations of\n * points, then large gaps between some. Creating equally distributed\n * ticks over this entire range may lead to a huge number of ticks that\n * will later be removed. So instead, break the positions up in\n * segments, find the tick positions for each segment then concatenize\n * them. This method is used from both data grouping logic and X axis\n * tick position logic.\n * @private\n */\n function getTimeTicks(normalizedInterval, min, max, startOfWeek, positions, closestDistance, findHigherRanks) {\n if (positions === void 0) { positions = []; }\n if (closestDistance === void 0) { closestDistance = 0; }\n var higherRanks = {},\n tickPixelIntervalOption = this.options.tickPixelInterval,\n time = this.chart.time, \n // Record all the start positions of a segment, to use when\n // deciding what's a gap in the data.\n segmentStarts = [];\n var end,\n segmentPositions,\n hasCrossedHigherRank,\n info,\n outsideMax,\n start = 0,\n groupPositions = [],\n lastGroupPosition = -Number.MAX_VALUE;\n // The positions are not always defined, for example for ordinal\n // positions when data has regular interval (#1557, #2090)\n if ((!this.options.ordinal && !this.options.breaks) ||\n !positions ||\n positions.length < 3 ||\n typeof min === 'undefined') {\n return time.getTimeTicks.apply(time, arguments);\n }\n // Analyze the positions array to split it into segments on gaps\n // larger than 5 times the closest distance. The closest distance is\n // already found at this point, so we reuse that instead of\n // computing it again.\n var posLength = positions.length;\n for (end = 0; end < posLength; end++) {\n outsideMax = end && positions[end - 1] > max;\n if (positions[end] < min) { // Set the last position before min\n start = end;\n }\n if (end === posLength - 1 ||\n positions[end + 1] - positions[end] > closestDistance * 5 ||\n outsideMax) {\n // For each segment, calculate the tick positions from the\n // getTimeTicks utility function. The interval will be the\n // same regardless of how long the segment is.\n if (positions[end] > lastGroupPosition) { // #1475\n segmentPositions = time.getTimeTicks(normalizedInterval, positions[start], positions[end], startOfWeek);\n // Prevent duplicate groups, for example for multiple\n // segments within one larger time frame (#1475)\n while (segmentPositions.length &&\n segmentPositions[0] <= lastGroupPosition) {\n segmentPositions.shift();\n }\n if (segmentPositions.length) {\n lastGroupPosition =\n segmentPositions[segmentPositions.length - 1];\n }\n segmentStarts.push(groupPositions.length);\n groupPositions = groupPositions.concat(segmentPositions);\n }\n // Set start of next segment\n start = end + 1;\n }\n if (outsideMax) {\n break;\n }\n }\n // Get the grouping info from the last of the segments. The info is\n // the same for all segments.\n if (segmentPositions) {\n info = segmentPositions.info;\n // Optionally identify ticks with higher rank, for example\n // when the ticks have crossed midnight.\n if (findHigherRanks && info.unitRange <= timeUnits.hour) {\n end = groupPositions.length - 1;\n // Compare points two by two\n for (start = 1; start < end; start++) {\n if (time.dateFormat('%d', groupPositions[start]) !==\n time.dateFormat('%d', groupPositions[start - 1])) {\n higherRanks[groupPositions[start]] = 'day';\n hasCrossedHigherRank = true;\n }\n }\n // If the complete array has crossed midnight, we want\n // to mark the first positions also as higher rank\n if (hasCrossedHigherRank) {\n higherRanks[groupPositions[0]] = 'day';\n }\n info.higherRanks = higherRanks;\n }\n // Save the info\n info.segmentStarts = segmentStarts;\n groupPositions.info = info;\n }\n else {\n error(12, false, this.chart);\n }\n // Don't show ticks within a gap in the ordinal axis, where the\n // space between two points is greater than a portion of the tick\n // pixel interval\n if (findHigherRanks && defined(tickPixelIntervalOption)) {\n var length_1 = groupPositions.length,\n translatedArr = [],\n distances = [];\n var itemToRemove = void 0,\n translated = void 0,\n lastTranslated = void 0,\n medianDistance = void 0,\n distance = void 0,\n i = length_1;\n // Find median pixel distance in order to keep a reasonably even\n // distance between ticks (#748)\n while (i--) {\n translated = this.translate(groupPositions[i]);\n if (lastTranslated) {\n distances[i] = lastTranslated - translated;\n }\n translatedArr[i] = lastTranslated = translated;\n }\n distances.sort();\n medianDistance = distances[Math.floor(distances.length / 2)];\n if (medianDistance < tickPixelIntervalOption * 0.6) {\n medianDistance = null;\n }\n // Now loop over again and remove ticks where needed\n i = groupPositions[length_1 - 1] > max ? length_1 - 1 : length_1; // #817\n lastTranslated = void 0;\n while (i--) {\n translated = translatedArr[i];\n distance = Math.abs(lastTranslated - translated);\n // #4175 - when axis is reversed, the distance, is negative but\n // tickPixelIntervalOption positive, so we need to compare the\n // same values\n // Remove ticks that are closer than 0.6 times the pixel\n // interval from the one to the right, but not if it is close to\n // the median distance (#748).\n if (lastTranslated &&\n distance < tickPixelIntervalOption * 0.8 &&\n (medianDistance === null || distance < medianDistance * 0.8)) {\n // Is this a higher ranked position with a normal\n // position to the right?\n if (higherRanks[groupPositions[i]] &&\n !higherRanks[groupPositions[i + 1]]) {\n // Yes: remove the lower ranked neighbour to the\n // right\n itemToRemove = i + 1;\n lastTranslated = translated; // #709\n }\n else {\n // No: remove this one\n itemToRemove = i;\n }\n groupPositions.splice(itemToRemove, 1);\n }\n else {\n lastTranslated = translated;\n }\n }\n }\n return groupPositions;\n }\n /**\n * Get axis position of given index of the extended ordinal positions.\n * Used only when panning an ordinal axis.\n *\n * @private\n * @function Highcharts.Axis#index2val\n * @param {number} index\n * The index value of searched point\n */\n function index2val(index) {\n var axis = this,\n ordinal = axis.ordinal, \n // Context could be changed to extendedOrdinalPositions.\n ordinalPositions = ordinal.positions;\n // The visible range contains only equally spaced values.\n if (!ordinalPositions) {\n return index;\n }\n var i = ordinalPositions.length - 1,\n distance;\n if (index < 0) { // out of range, in effect panning to the left\n index = ordinalPositions[0];\n }\n else if (index > i) { // out of range, panning to the right\n index = ordinalPositions[i];\n }\n else { // split it up\n i = Math.floor(index);\n distance = index - i; // the decimal\n }\n if (typeof distance !== 'undefined' &&\n typeof ordinalPositions[i] !== 'undefined') {\n return ordinalPositions[i] + (distance ?\n distance *\n (ordinalPositions[i + 1] - ordinalPositions[i]) :\n 0);\n }\n return index;\n }\n /**\n * Translate from linear (internal) to axis value.\n *\n * @private\n * @function Highcharts.Axis#lin2val\n * @param {number} val\n * The linear abstracted value.\n */\n function lin2val(val) {\n var axis = this,\n ordinal = axis.ordinal,\n localMin = axis.old ? axis.old.min : axis.min,\n localA = axis.old ? axis.old.transA : axis.transA;\n var positions = ordinal.positions; // for the current visible range\n // The visible range contains only equally spaced values.\n if (!positions) {\n return val;\n }\n // Convert back from modivied value to pixels. // #15970\n var pixelVal = (val - localMin) * localA +\n axis.minPixelPadding,\n isInside = pixelVal > 0 && pixelVal < axis.left + axis.len;\n // If the value is not inside the plot area, use the extended positions.\n // (array contains also points that are outside of the plotArea).\n if (!isInside) {\n // When iterating for the first time,\n // get the extended ordinal positional and assign them.\n if (!ordinal.extendedOrdinalPositions) {\n ordinal.extendedOrdinalPositions = (ordinal.getExtendedPositions());\n }\n positions = ordinal.extendedOrdinalPositions;\n }\n // In some cases (especially in early stages of the chart creation) the\n // getExtendedPositions might return undefined.\n if (positions && positions.length) {\n var index = ordinal.getIndexOfPoint(pixelVal,\n positions),\n mantissa = correctFloat(index % 1);\n // Check if the index is inside position array. If true,\n // read/approximate value for that exact index.\n if (index >= 0 && index < positions.length - 1) {\n var leftNeighbour = positions[Math.floor(index)],\n rightNeighbour = positions[Math.ceil(index)],\n distance = rightNeighbour - leftNeighbour;\n return positions[Math.floor(index)] + mantissa * distance;\n }\n // For cases when the index is not in the extended ordinal position\n // array, like when the value we are looking for exceed the\n // available data, approximate that value based on the calculated\n // slope.\n var positionsLength = positions.length,\n firstPositionsValue = positions[0],\n lastPositionsValue = positions[positionsLength - 1],\n slope = (lastPositionsValue - firstPositionsValue) / (positionsLength - 1);\n if (index < 0) {\n return firstPositionsValue + slope * index;\n }\n return lastPositionsValue + slope * (index - positionsLength);\n }\n return val;\n }\n /**\n * Internal function to calculate the precise index in ordinalPositions\n * array.\n * @private\n */\n function getIndexInArray(ordinalPositions, val) {\n var index = OrdinalAxis.Additions.findIndexOf(ordinalPositions,\n val,\n true);\n if (ordinalPositions[index] === val) {\n return index;\n }\n var percent = (val - ordinalPositions[index]) /\n (ordinalPositions[index + 1] - ordinalPositions[index]);\n return index + percent;\n }\n /**\n * @private\n */\n function onAxisAfterInit() {\n var axis = this;\n if (!axis.ordinal) {\n axis.ordinal = new OrdinalAxis.Additions(axis);\n }\n }\n /**\n * @private\n */\n function onAxisFoundExtremes() {\n var axis = this;\n if (axis.isXAxis &&\n defined(axis.options.overscroll) &&\n axis.max === axis.dataMax &&\n (\n // Panning is an execption. We don't want to apply\n // overscroll when panning over the dataMax\n !axis.chart.mouseIsDown ||\n axis.isInternal) && (\n // Scrollbar buttons are the other execption:\n !axis.eventArgs ||\n axis.eventArgs && axis.eventArgs.trigger !== 'navigator')) {\n axis.max += axis.options.overscroll;\n // Live data and buttons require translation for the min:\n if (!axis.isInternal && defined(axis.userMin)) {\n axis.min += axis.options.overscroll;\n }\n }\n }\n /**\n * For ordinal axis, that loads data async, redraw axis after data is\n * loaded. If we don't do that, axis will have the same extremes as\n * previously, but ordinal positions won't be calculated. See #10290\n * @private\n */\n function onAxisAfterSetScale() {\n var axis = this;\n if (axis.horiz && !axis.isDirty) {\n axis.isDirty = axis.isOrdinal &&\n axis.chart.navigator &&\n !axis.chart.navigator.adaptToUpdatedData;\n }\n }\n /**\n * @private\n */\n function onAxisInitialAxisTranslation() {\n var axis = this;\n if (axis.ordinal) {\n axis.ordinal.beforeSetTickPositions();\n axis.tickInterval = axis.ordinal.postProcessTickInterval(axis.tickInterval);\n }\n }\n /**\n * Extending the Chart.pan method for ordinal axes\n * @private\n */\n function onChartPan(e) {\n var chart = this,\n xAxis = chart.xAxis[0],\n overscroll = xAxis.options.overscroll,\n chartX = e.originalEvent.chartX,\n panning = chart.options.chart.panning;\n var runBase = false;\n if (panning &&\n panning.type !== 'y' &&\n xAxis.options.ordinal &&\n xAxis.series.length) {\n var mouseDownX = chart.mouseDownX,\n extremes = xAxis.getExtremes(),\n dataMax = extremes.dataMax,\n min = extremes.min,\n max = extremes.max,\n hoverPoints = chart.hoverPoints,\n closestPointRange = (xAxis.closestPointRange ||\n (xAxis.ordinal && xAxis.ordinal.overscrollPointsRange)),\n pointPixelWidth = (xAxis.translationSlope *\n (xAxis.ordinal.slope || closestPointRange)), \n // how many ordinal units did we move?\n movedUnits = (mouseDownX - chartX) / pointPixelWidth, \n // get index of all the chart's points\n extendedOrdinalPositions = xAxis.ordinal.getExtendedPositions(),\n extendedAxis = {\n ordinal: {\n positions: extendedOrdinalPositions,\n extendedOrdinalPositions: extendedOrdinalPositions\n }\n },\n index2val_1 = xAxis.index2val,\n val2lin_1 = xAxis.val2lin;\n var trimmedRange = void 0,\n ordinalPositions = void 0,\n searchAxisLeft = void 0,\n searchAxisRight = void 0;\n // we have an ordinal axis, but the data is equally spaced\n if (!extendedAxis.ordinal.positions) {\n runBase = true;\n }\n else if (Math.abs(movedUnits) > 1) {\n // Remove active points for shared tooltip\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n if (movedUnits < 0) {\n searchAxisLeft = extendedAxis;\n searchAxisRight = xAxis.ordinal.positions ?\n xAxis : extendedAxis;\n }\n else {\n searchAxisLeft = xAxis.ordinal.positions ?\n xAxis : extendedAxis;\n searchAxisRight = extendedAxis;\n }\n // In grouped data series, the last ordinal position represents\n // the grouped data, which is to the left of the real data max.\n // If we don't compensate for this, we will be allowed to pan\n // grouped data series passed the right of the plot area.\n ordinalPositions = searchAxisRight.ordinal.positions;\n if (dataMax >\n ordinalPositions[ordinalPositions.length - 1]) {\n ordinalPositions.push(dataMax);\n }\n // Get the new min and max values by getting the ordinal index\n // for the current extreme, then add the moved units and\n // translate back to values. This happens on the extended\n // ordinal positions if the new position is out of range, else\n // it happens on the current x axis which is smaller and faster.\n chart.fixedRange = max - min;\n trimmedRange = xAxis.navigatorAxis\n .toFixedRange(void 0, void 0, index2val_1.apply(searchAxisLeft, [\n val2lin_1.apply(searchAxisLeft, [min, true]) +\n movedUnits\n ]), index2val_1.apply(searchAxisRight, [\n val2lin_1.apply(searchAxisRight, [max, true]) +\n movedUnits\n ]));\n // Apply it if it is within the available data range\n if (trimmedRange.min >= Math.min(extremes.dataMin, min) &&\n trimmedRange.max <= Math.max(dataMax, max) +\n overscroll) {\n xAxis.setExtremes(trimmedRange.min, trimmedRange.max, true, false, { trigger: 'pan' });\n }\n chart.mouseDownX = chartX; // set new reference for next run\n css(chart.container, { cursor: 'move' });\n }\n }\n else {\n runBase = true;\n }\n // revert to the linear chart.pan version\n if (runBase || (panning && /y/.test(panning.type))) {\n if (overscroll) {\n xAxis.max = xAxis.dataMax + overscroll;\n }\n }\n else {\n e.preventDefault();\n }\n }\n /**\n * @private\n */\n function onSeriesUpdatedData() {\n var xAxis = this.xAxis;\n // Destroy the extended ordinal index on updated data\n // and destroy extendedOrdinalPositions, #16055.\n if (xAxis && xAxis.options.ordinal) {\n delete xAxis.ordinal.index;\n delete xAxis.ordinal.extendedOrdinalPositions;\n }\n }\n /**\n * Translate from a linear axis value to the corresponding ordinal axis\n * position. If there are no gaps in the ordinal axis this will be the\n * same. The translated value is the value that the point would have if\n * the axis was linear, using the same min and max.\n *\n * @private\n * @function Highcharts.Axis#val2lin\n * @param {number} val\n * The axis value.\n * @param {boolean} [toIndex]\n * Whether to return the index in the ordinalPositions or the new value.\n */\n function val2lin(val, toIndex) {\n var axis = this,\n ordinal = axis.ordinal,\n ordinalPositions = ordinal.positions;\n var slope = ordinal.slope,\n extendedOrdinalPositions = ordinal.extendedOrdinalPositions;\n if (!ordinalPositions) {\n return val;\n }\n var ordinalLength = ordinalPositions.length;\n var ordinalIndex;\n // If the searched value is inside visible plotArea, ivastigate the\n // value basing on ordinalPositions.\n if (ordinalPositions[0] <= val &&\n ordinalPositions[ordinalLength - 1] >= val) {\n ordinalIndex = getIndexInArray(ordinalPositions, val);\n // final return value is based on ordinalIndex\n }\n else {\n if (!extendedOrdinalPositions) {\n extendedOrdinalPositions =\n ordinal.getExtendedPositions &&\n ordinal.getExtendedPositions();\n ordinal.extendedOrdinalPositions = extendedOrdinalPositions;\n }\n if (!(extendedOrdinalPositions && extendedOrdinalPositions.length)) {\n return val;\n }\n var length_2 = extendedOrdinalPositions.length;\n if (!slope) {\n slope =\n (extendedOrdinalPositions[length_2 - 1] -\n extendedOrdinalPositions[0]) /\n length_2;\n }\n // OriginalPointReference is equal to the index of\n // first point of ordinalPositions in extendedOrdinalPositions.\n var originalPositionsReference = getIndexInArray(extendedOrdinalPositions,\n ordinalPositions[0]);\n // If the searched value is outside the visiblePlotArea,\n // check if it is inside extendedOrdinalPositions.\n if (val >= extendedOrdinalPositions[0] &&\n val <=\n extendedOrdinalPositions[length_2 - 1]) {\n // Return Value\n ordinalIndex = getIndexInArray(extendedOrdinalPositions, val) -\n originalPositionsReference;\n }\n else {\n // Since ordinal.slope is the average distance between 2\n // points on visible plotArea, this can be used to calculete\n // the approximate position of the point, which is outside\n // the extededOrdinalPositions.\n if (val < extendedOrdinalPositions[0]) {\n var diff = extendedOrdinalPositions[0] - val,\n approximateIndexOffset = diff / slope;\n ordinalIndex =\n -originalPositionsReference -\n approximateIndexOffset;\n }\n else {\n var diff = val -\n extendedOrdinalPositions[length_2 - 1],\n approximateIndexOffset = diff / slope;\n ordinalIndex =\n approximateIndexOffset +\n length_2 -\n originalPositionsReference;\n }\n }\n }\n return toIndex ? ordinalIndex : slope * (ordinalIndex || 0) +\n ordinal.offset;\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * @private\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n /**\n * @private\n */\n function Additions(axis) {\n this.index = {};\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Calculate the ordinal positions before tick positions are calculated.\n * @private\n */\n Additions.prototype.beforeSetTickPositions = function () {\n var axis = this.axis,\n ordinal = axis.ordinal,\n extremes = axis.getExtremes(),\n min = extremes.min,\n max = extremes.max,\n hasBreaks = axis.isXAxis && !!axis.options.breaks,\n isOrdinal = axis.options.ordinal,\n ignoreHiddenSeries = axis.chart.options.chart.ignoreHiddenSeries;\n var len,\n uniqueOrdinalPositions,\n dist,\n minIndex,\n maxIndex,\n slope,\n i,\n ordinalPositions = [],\n overscrollPointsRange = Number.MAX_VALUE,\n useOrdinal = false,\n adjustOrdinalExtremesPoints = false,\n isBoosted = false;\n // Apply the ordinal logic\n if (isOrdinal || hasBreaks) { // #4167 YAxis is never ordinal ?\n var distanceBetweenPoint_1 = 0;\n axis.series.forEach(function (series, i) {\n uniqueOrdinalPositions = [];\n // For an axis with multiple series, check if the distance\n // between points is identical throughout all series.\n if (i > 0 &&\n series.options.id !== 'highcharts-navigator-series' &&\n series.processedXData.length > 1) {\n adjustOrdinalExtremesPoints =\n distanceBetweenPoint_1 !== series.processedXData[1] -\n series.processedXData[0];\n }\n distanceBetweenPoint_1 =\n series.processedXData[1] - series.processedXData[0];\n if (series.boosted) {\n isBoosted = series.boosted;\n }\n if ((!ignoreHiddenSeries || series.visible !== false) &&\n (series\n .takeOrdinalPosition !== false ||\n hasBreaks)) {\n // concatenate the processed X data into the existing\n // positions, or the empty array\n ordinalPositions = ordinalPositions.concat(series.processedXData);\n len = ordinalPositions.length;\n // remove duplicates (#1588)\n ordinalPositions.sort(function (a, b) {\n // without a custom function it is sorted as strings\n return a - b;\n });\n overscrollPointsRange = Math.min(overscrollPointsRange, pick(\n // Check for a single-point series:\n series.closestPointRange, overscrollPointsRange));\n if (len) {\n i = 0;\n while (i < len - 1) {\n if (ordinalPositions[i] !==\n ordinalPositions[i + 1]) {\n uniqueOrdinalPositions.push(ordinalPositions[i + 1]);\n }\n i++;\n }\n // Check first item:\n if (uniqueOrdinalPositions[0] !==\n ordinalPositions[0]) {\n uniqueOrdinalPositions.unshift(ordinalPositions[0]);\n }\n ordinalPositions = uniqueOrdinalPositions;\n }\n }\n });\n // If the distance between points is not identical throughout\n // all series, remove the first and last ordinal position to\n // avoid enabling ordinal logic when it is not needed, #17405.\n // Only for boosted series because changes are negligible.\n if (adjustOrdinalExtremesPoints && isBoosted) {\n ordinalPositions.pop();\n ordinalPositions.shift();\n }\n // cache the length\n len = ordinalPositions.length;\n // Check if we really need the overhead of mapping axis data\n // against the ordinal positions. If the series consist of\n // evenly spaced data any way, we don't need any ordinal logic.\n if (len > 2) { // two points have equal distance by default\n dist = ordinalPositions[1] - ordinalPositions[0];\n i = len - 1;\n while (i-- && !useOrdinal) {\n if (ordinalPositions[i + 1] - ordinalPositions[i] !==\n dist) {\n useOrdinal = true;\n }\n }\n // When zooming in on a week, prevent axis padding for\n // weekends even though the data within the week is evenly\n // spaced.\n if (!axis.options.keepOrdinalPadding &&\n (ordinalPositions[0] - min > dist ||\n (max -\n ordinalPositions[ordinalPositions.length - 1]) > dist)) {\n useOrdinal = true;\n }\n }\n else if (axis.options.overscroll) {\n if (len === 2) {\n // Exactly two points, distance for overscroll is fixed:\n overscrollPointsRange =\n ordinalPositions[1] - ordinalPositions[0];\n }\n else if (len === 1) {\n // We have just one point, closest distance is unknown.\n // Assume then it is last point and overscrolled range:\n overscrollPointsRange = axis.options.overscroll;\n ordinalPositions = [\n ordinalPositions[0],\n ordinalPositions[0] + overscrollPointsRange\n ];\n }\n else {\n // In case of zooming in on overscrolled range, stick to\n // the old range:\n overscrollPointsRange = ordinal.overscrollPointsRange;\n }\n }\n // Record the slope and offset to compute the linear values from\n // the array index. Since the ordinal positions may exceed the\n // current range, get the start and end positions within it\n // (#719, #665b)\n if (useOrdinal || axis.forceOrdinal) {\n if (axis.options.overscroll) {\n ordinal.overscrollPointsRange = overscrollPointsRange;\n ordinalPositions = ordinalPositions.concat(ordinal.getOverscrollPositions());\n }\n // Register\n ordinal.positions = ordinalPositions;\n // This relies on the ordinalPositions being set. Use\n // Math.max and Math.min to prevent padding on either sides\n // of the data.\n minIndex = axis.ordinal2lin(// #5979\n Math.max(min, ordinalPositions[0]), true);\n maxIndex = Math.max(axis.ordinal2lin(Math.min(max, ordinalPositions[ordinalPositions.length - 1]), true), 1); // #3339\n // Set the slope and offset of the values compared to the\n // indices in the ordinal positions\n ordinal.slope = slope = (max - min) / (maxIndex - minIndex);\n ordinal.offset = min - (minIndex * slope);\n }\n else {\n ordinal.overscrollPointsRange = pick(axis.closestPointRange, ordinal.overscrollPointsRange);\n ordinal.positions = axis.ordinal.slope = ordinal.offset =\n void 0;\n }\n }\n axis.isOrdinal = isOrdinal && useOrdinal; // #3818, #4196, #4926\n ordinal.groupIntervalFactor = null; // reset for next run\n };\n /**\n * Faster way of using the Array.indexOf method.\n * Works for sorted arrays only with unique values.\n *\n * @param {Array} sortedArray\n * The sorted array inside which we are looking for.\n * @param {number} key\n * The key to being found.\n * @param {boolean} indirectSearch\n * In case of lack of the point in the array, should return\n * value be equal to -1 or the closest smaller index.\n * @private\n */\n Additions.findIndexOf = function (sortedArray, key, indirectSearch) {\n var start = 0,\n end = sortedArray.length - 1,\n middle;\n while (start < end) {\n middle = Math.ceil((start + end) / 2);\n // Key found as the middle element.\n if (sortedArray[middle] <= key) {\n // Continue searching to the right.\n start = middle;\n }\n else {\n // Continue searching to the left.\n end = middle - 1;\n }\n }\n if (sortedArray[start] === key) {\n return start;\n }\n // Key could not be found.\n return !indirectSearch ? -1 : start;\n };\n /**\n * Get the ordinal positions for the entire data set. This is necessary\n * in chart panning because we need to find out what points or data\n * groups are available outside the visible range. When a panning\n * operation starts, if an index for the given grouping does not exists,\n * it is created and cached. This index is deleted on updated data, so\n * it will be regenerated the next time a panning operation starts.\n * @private\n */\n Additions.prototype.getExtendedPositions = function () {\n var ordinal = this,\n axis = ordinal.axis,\n axisProto = axis.constructor.prototype,\n chart = axis.chart,\n grouping = axis.series[0].currentDataGrouping,\n key = grouping ?\n grouping.count + grouping.unitName :\n 'raw',\n overscroll = axis.options.overscroll,\n extremes = axis.getExtremes();\n var fakeAxis,\n fakeSeries = void 0,\n ordinalIndex = ordinal.index;\n // If this is the first time, or the ordinal index is deleted by\n // updatedData,\n // create it.\n if (!ordinalIndex) {\n ordinalIndex = ordinal.index = {};\n }\n if (!ordinalIndex[key]) {\n // Create a fake axis object where the extended ordinal\n // positions are emulated\n fakeAxis = {\n series: [],\n chart: chart,\n forceOrdinal: false,\n getExtremes: function () {\n return {\n min: extremes.dataMin,\n max: extremes.dataMax + overscroll\n };\n },\n getGroupPixelWidth: axisProto.getGroupPixelWidth,\n getTimeTicks: axisProto.getTimeTicks,\n options: {\n ordinal: true\n },\n ordinal: {\n getGroupIntervalFactor: this.getGroupIntervalFactor\n },\n ordinal2lin: axisProto.ordinal2lin,\n getIndexOfPoint: axisProto.getIndexOfPoint,\n val2lin: axisProto.val2lin // #2590\n };\n fakeAxis.ordinal.axis = fakeAxis;\n // Add the fake series to hold the full data, then apply\n // processData to it\n axis.series.forEach(function (series) {\n fakeSeries = {\n xAxis: fakeAxis,\n xData: series.xData.slice(),\n chart: chart,\n destroyGroupedData: H.noop,\n getProcessedData: Series.prototype.getProcessedData,\n applyGrouping: Series.prototype.applyGrouping\n };\n fakeSeries.xData = fakeSeries.xData.concat(ordinal.getOverscrollPositions());\n fakeSeries.options = {\n dataGrouping: grouping ? {\n firstAnchor: 'firstPoint',\n anchor: 'middle',\n lastAnchor: 'lastPoint',\n enabled: true,\n forced: true,\n // doesn't matter which, use the fastest\n approximation: 'open',\n units: [[\n grouping.unitName,\n [grouping.count]\n ]]\n } : {\n enabled: false\n }\n };\n fakeAxis.series.push(fakeSeries);\n series.processData.apply(fakeSeries);\n });\n // Force to use the ordinal when points are evenly spaced (e.g.\n // weeks), #3825.\n if ((fakeSeries.closestPointRange !==\n fakeSeries.basePointRange) &&\n fakeSeries.currentDataGrouping) {\n fakeAxis.forceOrdinal = true;\n }\n // Run beforeSetTickPositions to compute the ordinalPositions\n axis.ordinal.beforeSetTickPositions.apply({ axis: fakeAxis });\n // Cache it\n ordinalIndex[key] = fakeAxis.ordinal.positions;\n }\n return ordinalIndex[key];\n };\n /**\n * Find the factor to estimate how wide the plot area would have been if\n * ordinal gaps were included. This value is used to compute an imagined\n * plot width in order to establish the data grouping interval.\n *\n * A real world case is the intraday-candlestick example. Without this\n * logic, it would show the correct data grouping when viewing a range\n * within each day, but once moving the range to include the gap between\n * two days, the interval would include the cut-away night hours and the\n * data grouping would be wrong. So the below method tries to compensate\n * by identifying the most common point interval, in this case days.\n *\n * An opposite case is presented in issue #718. We have a long array of\n * daily data, then one point is appended one hour after the last point.\n * We expect the data grouping not to change.\n *\n * In the future, if we find cases where this estimation doesn't work\n * optimally, we might need to add a second pass to the data grouping\n * logic, where we do another run with a greater interval if the number\n * of data groups is more than a certain fraction of the desired group\n * count.\n * @private\n */\n Additions.prototype.getGroupIntervalFactor = function (xMin, xMax, series) {\n var ordinal = this,\n axis = ordinal.axis,\n processedXData = series.processedXData,\n len = processedXData.length,\n distances = [];\n var median,\n i,\n groupIntervalFactor = ordinal.groupIntervalFactor;\n // Only do this computation for the first series, let the other\n // inherit it (#2416)\n if (!groupIntervalFactor) {\n // Register all the distances in an array\n for (i = 0; i < len - 1; i++) {\n distances[i] = (processedXData[i + 1] -\n processedXData[i]);\n }\n // Sort them and find the median\n distances.sort(function (a, b) {\n return a - b;\n });\n median = distances[Math.floor(len / 2)];\n // Compensate for series that don't extend through the entire\n // axis extent. #1675.\n xMin = Math.max(xMin, processedXData[0]);\n xMax = Math.min(xMax, processedXData[len - 1]);\n ordinal.groupIntervalFactor = groupIntervalFactor =\n (len * median) / (xMax - xMin);\n }\n // Return the factor needed for data grouping\n return groupIntervalFactor;\n };\n /**\n * Get index of point inside the ordinal positions array.\n *\n * @private\n * @param {number} val\n * The pixel value of a point.\n *\n * @param {Array} [ordinallArray]\n * An array of all points available on the axis for the given data set.\n * Either ordinalPositions if the value is inside the plotArea or\n * extendedOrdinalPositions if not.\n */\n Additions.prototype.getIndexOfPoint = function (val, ordinalArray) {\n var ordinal = this,\n axis = ordinal.axis,\n firstPointVal = ordinal.positions ? ordinal.positions[0] : 0;\n var firstPointX = axis.series[0].points &&\n axis.series[0].points[0] &&\n axis.series[0].points[0].plotX ||\n axis.minPixelPadding; // #15987\n // When more series assign to axis, find the smallest one, #15987.\n if (axis.series.length > 1) {\n axis.series.forEach(function (series) {\n if (series.points &&\n defined(series.points[0]) &&\n defined(series.points[0].plotX) &&\n series.points[0].plotX < firstPointX &&\n // #17128\n series.points[0].plotX >= pick(axis.min, -Infinity)) {\n firstPointX = series.points[0].plotX;\n }\n });\n }\n // Distance in pixels between two points on the ordinal axis in the\n // current zoom.\n var ordinalPointPixelInterval = axis.translationSlope * (ordinal.slope ||\n axis.closestPointRange ||\n ordinal.overscrollPointsRange), \n // toValue for the first point.\n shiftIndex = (val - firstPointX) / ordinalPointPixelInterval;\n return Additions.findIndexOf(ordinalArray, firstPointVal) + shiftIndex;\n };\n /**\n * Get ticks for an ordinal axis within a range where points don't\n * exist. It is required when overscroll is enabled. We can't base on\n * points, because we may not have any, so we use approximated\n * pointRange and generate these ticks between Axis.dataMax,\n * Axis.dataMax + Axis.overscroll evenly spaced. Used in panning and\n * navigator scrolling.\n * @private\n */\n Additions.prototype.getOverscrollPositions = function () {\n var ordinal = this,\n axis = ordinal.axis,\n extraRange = axis.options.overscroll,\n distance = ordinal.overscrollPointsRange,\n positions = [],\n max = axis.dataMax;\n if (defined(distance)) {\n // Max + pointRange because we need to scroll to the last\n while (max <= axis.dataMax + extraRange) {\n max += distance;\n positions.push(max);\n }\n }\n return positions;\n };\n /**\n * Make the tick intervals closer because the ordinal gaps make the\n * ticks spread out or cluster.\n * @private\n */\n Additions.prototype.postProcessTickInterval = function (tickInterval) {\n // Problem: https://jsfiddle.net/highcharts/FQm4E/1/. This is a case\n // where this algorithm doesn't work optimally. In this case, the\n // tick labels are spread out per week, but all the gaps reside\n // within weeks. So we have a situation where the labels are courser\n // than the ordinal gaps, and thus the tick interval should not be\n // altered.\n var ordinal = this,\n axis = ordinal.axis,\n ordinalSlope = ordinal.slope;\n var ret;\n if (ordinalSlope) {\n if (!axis.options.breaks) {\n ret = (tickInterval /\n (ordinalSlope / axis.closestPointRange));\n }\n else {\n ret = axis.closestPointRange || tickInterval; // #7275\n }\n }\n else {\n ret = tickInterval;\n }\n return ret;\n };\n return Additions;\n }());\n OrdinalAxis.Additions = Additions;\n })(OrdinalAxis || (OrdinalAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return OrdinalAxis;\n });\n _registerModule(_modules, 'Series/HLC/HLCPoint.js', [_modules['Core/Series/SeriesRegistry.js']], function (SeriesRegistry) {\n /* *\n *\n * (c) 2010-2021 Pawel Lysy\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var ColumnPoint = SeriesRegistry.seriesTypes.column.prototype.pointClass;\n /* *\n *\n * Class\n *\n * */\n var HLCPoint = /** @class */ (function (_super) {\n __extends(HLCPoint, _super);\n function HLCPoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.close = void 0;\n _this.high = void 0;\n _this.low = void 0;\n _this.options = void 0;\n _this.plotClose = void 0;\n _this.series = void 0;\n return _this;\n }\n return HLCPoint;\n }(ColumnPoint));\n /* *\n *\n * Default Export\n *\n * */\n\n return HLCPoint;\n });\n _registerModule(_modules, 'Series/HLC/HLCSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Pawel Lysy\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * An HLC chart is a style of financial chart used to describe price\n * movements over time. It displays high, low and close values per\n * data point.\n *\n * @sample stock/demo/hlc/\n * HLC chart\n *\n * @extends plotOptions.column\n * @excluding borderColor, borderRadius, borderWidth, crisp, stacking,\n * stack\n * @product highstock\n * @optionparent plotOptions.hlc\n */\n var HLCSeriesDefaults = {\n /**\n * The approximate pixel width of each group. If for example a series\n * with 30 points is displayed over a 600 pixel wide plot area, no\n * grouping is performed. If however the series contains so many points\n * that the spacing is less than the groupPixelWidth, Highcharts will\n * try to group it into appropriate groups so that each is more or less\n * two pixels wide. Defaults to `5`.\n *\n * @type {number}\n * @default 5\n * @product highstock\n * @apioption plotOptions.hlc.dataGrouping.groupPixelWidth\n */\n /**\n * @type {Highcharts.DataGroupingApproximationValue|Function}\n * @default hlc\n * @product highstock\n * @apioption plotOptions.hlc.dataGrouping.approximation\n */\n /**\n * @default close\n * @apioption plotOptions.hlc.colorKey\n */\n /**\n * The pixel width of the line/border. Defaults to `1`.\n *\n * @sample {highstock} stock/plotoptions/hlc-linewidth/\n * A greater line width\n *\n * @type {number}\n * @default 1\n * @product highstock\n *\n * @public\n */\n lineWidth: 1,\n tooltip: {\n pointFormat: '\\u25CF ' +\n ' {series.name}
' +\n 'High: {point.high}
' +\n 'Low: {point.low}
' +\n 'Close: {point.close}
'\n },\n /**\n * @type {number|null}\n */\n threshold: null,\n states: {\n /**\n * @extends plotOptions.column.states.hover\n * @product highstock\n */\n hover: {\n /**\n * The pixel width of the line representing the HLC point.\n *\n * @type {number}\n * @default 3\n * @product highstock\n */\n lineWidth: 3\n }\n },\n /**\n * Determines which one of `high`, `low`, `close` values should\n * be represented as `point.y`, which is later used to set dataLabel\n * position and [compare](#plotOptions.series.compare).\n *\n * @sample {highstock} stock/plotoptions/hlc-pointvalkey/\n * Possible values\n *\n * @type {string}\n * @default close\n * @validvalue [\"high\", \"low\", \"close\"]\n * @product highstock\n * @apioption plotOptions.hlc.pointValKey\n */\n /**\n * @default close\n * @apioption plotOptions.hlc.colorKey\n */\n stickyTracking: true\n };\n /**\n * A `hlc` series. If the [type](#series.hlc.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.hlc\n * @excluding dataParser, dataURL\n * @product highstock\n * @apioption series.hlc\n */\n /**\n * An array of data points for the series. For the `hlc` series type,\n * points can be given in the following ways:\n *\n * 1. An array of arrays with 4 or 3 values. In this case, the values correspond\n * to `x,high,low,close`. If the first value is a string, it is applied\n * as the name of the point, and the `x` value is inferred. The `x` value can\n * also be omitted, in which case the inner arrays should be of length of 3\\.\n * Then the `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 5, 6, 7],\n * [1, 4, 8, 2],\n * [2, 3, 4, 10]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.hlc.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * high: 4,\n * low: 5,\n * close: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * high: 3,\n * low: 6,\n * close: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array|Array<(number|string),number,number,number>|*>}\n * @extends series.arearange.data\n * @excluding y, marker\n * @product highstock\n * @apioption series.hlc.data\n */\n /**\n * The closing value of each data point.\n *\n * @type {number}\n * @product highstock\n * @apioption series.hlc.data.close\n */\n (''); // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return HLCSeriesDefaults;\n });\n _registerModule(_modules, 'Series/HLC/HLCSeries.js', [_modules['Series/HLC/HLCPoint.js'], _modules['Series/HLC/HLCSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (HLCPoint, HLCSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Pawel Lysy\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var ColumnSeries = SeriesRegistry.seriesTypes.column;\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * The hlc series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.hlc\n *\n * @augments Highcharts.Series\n */\n var HLCSeries = /** @class */ (function (_super) {\n __extends(HLCSeries, _super);\n function HLCSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n _this.yData = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extend the path if close is not between high and low.\n *\n * @param {SVGPath} path the path array of the point\n * @param {number} halfStrokeWidth\n * @param {number} value value of the point to which the stem should be extended\n */\n HLCSeries.prototype.extendStem = function (path, halfStrokeWidth, value) {\n var start = path[0];\n var end = path[1];\n // We don't need to worry about crisp - close value\n // is already crisped and halfStrokeWidth should remove it.\n if (typeof start[2] === 'number') {\n start[2] = Math.max(value + halfStrokeWidth, start[2]);\n }\n if (typeof end[2] === 'number') {\n end[2] = Math.min(value - halfStrokeWidth, end[2]);\n }\n };\n /**\n * Function to create SVGPath of the point based on the\n * plot positions of this point.\n * @private\n */\n HLCSeries.prototype.getPointPath = function (point, graphic) {\n // crisp vector coordinates\n var strokeWidth = graphic.strokeWidth(),\n series = point.series,\n crispCorr = (strokeWidth % 2) / 2, \n // #2596:\n crispX = Math.round(point.plotX) - crispCorr,\n halfWidth = Math.round(point.shapeArgs.width / 2);\n var plotClose = point.plotClose;\n // the vertical stem\n var path = [\n ['M',\n crispX,\n Math.round(point.yBottom)],\n ['L',\n crispX,\n Math.round(point.plotHigh)]\n ];\n // close\n if (point.close !== null) {\n plotClose = Math.round(point.plotClose) + crispCorr;\n path.push(['M', crispX, plotClose], ['L', crispX + halfWidth, plotClose]);\n series.extendStem(path, strokeWidth / 2, plotClose);\n }\n return path;\n };\n /**\n * Draw single point\n * @private\n */\n HLCSeries.prototype.drawSinglePoint = function (point) {\n var series = point.series,\n chart = series.chart;\n var path,\n graphic = point.graphic;\n if (typeof point.plotY !== 'undefined') {\n // Create and/or update the graphic\n if (!graphic) {\n point.graphic = graphic = chart.renderer.path()\n .add(series.group);\n }\n if (!chart.styledMode) {\n graphic.attr(series.pointAttribs(point, (point.selected && 'select'))); // #3897\n }\n // crisp vector coordinates\n path = series.getPointPath(point, graphic);\n graphic[!graphic ? 'attr' : 'animate']({ d: path })\n .addClass(point.getClassName(), true);\n }\n };\n /**\n * Draw the data points\n * @private\n */\n HLCSeries.prototype.drawPoints = function () {\n this.points.forEach(this.drawSinglePoint);\n };\n /**\n * @private\n * @function Highcharts.seriesTypes.hlc#init\n */\n HLCSeries.prototype.init = function () {\n _super.prototype.init.apply(this, arguments);\n this.options.stacking = void 0; // #8817\n };\n /**\n * Postprocess mapping between options and SVG attributes\n * @private\n */\n HLCSeries.prototype.pointAttribs = function (point, state) {\n var attribs = _super.prototype.pointAttribs.call(this,\n point,\n state);\n delete attribs.fill;\n return attribs;\n };\n HLCSeries.prototype.toYData = function (point) {\n // return a plain array for speedy calculation\n return [point.high, point.low, point.close];\n };\n /**\n * Translate data points from raw values x and y to plotX and plotY\n *\n * @private\n * @function Highcharts.seriesTypes.hlc#translate\n */\n HLCSeries.prototype.translate = function () {\n var series = this,\n yAxis = series.yAxis,\n names = (this.pointArrayMap && this.pointArrayMap.slice()) || [],\n translated = names.map(function (name) {\n return \"plot\".concat(name.charAt(0).toUpperCase() + name.slice(1));\n });\n translated.push('yBottom');\n names.push('low');\n _super.prototype.translate.apply(series);\n // Do the translation\n series.points.forEach(function (point) {\n names.forEach(function (name, i) {\n var value = point[name];\n if (value !== null) {\n if (series.dataModify) {\n value = series.dataModify.modifyValue(value);\n }\n point[translated[i]] =\n yAxis.toPixels(value, true);\n }\n });\n // Align the tooltip to the high value to avoid covering the\n // point\n point.tooltipPos[1] =\n point.plotHigh + yAxis.pos - series.chart.plotTop;\n });\n };\n HLCSeries.defaultOptions = merge(ColumnSeries.defaultOptions, HLCSeriesDefaults);\n return HLCSeries;\n }(ColumnSeries));\n extend(HLCSeries.prototype, {\n pointClass: HLCPoint,\n animate: null,\n directTouch: false,\n pointArrayMap: ['high', 'low', 'close'],\n pointAttrToOptions: {\n stroke: 'color',\n 'stroke-width': 'lineWidth'\n },\n pointValKey: 'close'\n });\n SeriesRegistry.registerSeriesType('hlc', HLCSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return HLCSeries;\n });\n _registerModule(_modules, 'Series/OHLC/OHLCPoint.js', [_modules['Core/Series/SeriesRegistry.js']], function (SeriesRegistry) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var HLCSeries = SeriesRegistry.seriesTypes.hlc;\n /* *\n *\n * Class\n *\n * */\n var OHLCPoint = /** @class */ (function (_super) {\n __extends(OHLCPoint, _super);\n function OHLCPoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.open = void 0;\n _this.options = void 0;\n _this.plotOpen = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extend the parent method by adding up or down to the class name.\n * @private\n * @function Highcharts.seriesTypes.ohlc#getClassName\n */\n OHLCPoint.prototype.getClassName = function () {\n return _super.prototype.getClassName.call(this) +\n (this.open < this.close ?\n ' highcharts-point-up' :\n ' highcharts-point-down');\n };\n /**\n * Save upColor as point color (#14826).\n * @private\n * @function Highcharts.seriesTypes.ohlc#resolveUpColor\n */\n OHLCPoint.prototype.resolveUpColor = function () {\n if (this.open < this.close &&\n !this.options.color &&\n this.series.options.upColor) {\n this.color = this.series.options.upColor;\n }\n };\n /**\n * Extend the parent method by saving upColor.\n * @private\n * @function Highcharts.seriesTypes.ohlc#resolveColor\n */\n OHLCPoint.prototype.resolveColor = function () {\n _super.prototype.resolveColor.call(this);\n this.resolveUpColor();\n };\n /**\n * Extend the parent method by saving upColor.\n * @private\n * @function Highcharts.seriesTypes.ohlc#getZone\n *\n * @return {Highcharts.SeriesZonesOptionsObject}\n * The zone item.\n */\n OHLCPoint.prototype.getZone = function () {\n var zone = _super.prototype.getZone.call(this);\n this.resolveUpColor();\n return zone;\n };\n /**\n * Extend the parent method by resolving up/down colors (#15849)\n * @private\n **/\n OHLCPoint.prototype.applyOptions = function () {\n _super.prototype.applyOptions.apply(this, arguments);\n if (this.resolveColor) {\n this.resolveColor();\n }\n return this;\n };\n return OHLCPoint;\n }(HLCSeries.prototype.pointClass));\n /* *\n *\n * Default Export\n *\n * */\n\n return OHLCPoint;\n });\n _registerModule(_modules, 'Series/OHLC/OHLCSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * An OHLC chart is a style of financial chart used to describe price\n * movements over time. It displays open, high, low and close values per\n * data point.\n *\n * @sample stock/demo/ohlc\n * OHLC chart\n *\n * @extends plotOptions.hlc\n * @product highstock\n * @optionparent plotOptions.ohlc\n */\n var OHLCSeriesDefaults = {\n /**\n * @type {Highcharts.DataGroupingApproximationValue|Function}\n * @default ohlc\n * @product highstock\n * @apioption plotOptions.ohlc.dataGrouping.approximation\n */\n /**\n * Determines which one of `open`, `high`, `low`, `close` values should\n * be represented as `point.y`, which is later used to set dataLabel\n * position and [compare](#plotOptions.series.compare).\n *\n * @default close\n * @validvalue [\"open\", \"high\", \"low\", \"close\"]\n * @product highstock\n * @apioption plotOptions.ohlc.pointValKey\n */\n /**\n * Line color for up points.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n * @apioption plotOptions.ohlc.upColor\n */\n tooltip: {\n pointFormat: '\\u25CF ' +\n ' {series.name}
' +\n 'Open: {point.open}
' +\n 'High: {point.high}
' +\n 'Low: {point.low}
' +\n 'Close: {point.close}
'\n }\n };\n /**\n * The parameter allows setting line series type and use OHLC indicators.\n * Data in OHLC format is required.\n *\n * @sample {highstock} stock/indicators/use-ohlc-data\n * Use OHLC data format to plot line chart\n *\n * @type {boolean}\n * @product highstock\n * @apioption plotOptions.line.useOhlcData\n */\n /**\n * A `ohlc` series. If the [type](#series.ohlc.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.ohlc\n * @excluding dataParser, dataURL\n * @product highstock\n * @apioption series.ohlc\n */\n /**\n * An array of data points for the series. For the `ohlc` series type,\n * points can be given in the following ways:\n *\n * 1. An array of arrays with 5 or 4 values. In this case, the values correspond\n * to `x,open,high,low,close`. If the first value is a string, it is applied\n * as the name of the point, and the `x` value is inferred. The `x` value can\n * also be omitted, in which case the inner arrays should be of length 4\\.\n * Then the `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 6, 5, 6, 7],\n * [1, 9, 4, 8, 2],\n * [2, 6, 3, 4, 10]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.ohlc.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * open: 3,\n * high: 4,\n * low: 5,\n * close: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * open: 4,\n * high: 3,\n * low: 6,\n * close: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array|Array<(number|string),number,number,number,number>|*>}\n * @extends series.arearange.data\n * @excluding y, marker\n * @product highstock\n * @apioption series.ohlc.data\n */\n /**\n * The closing value of each data point.\n *\n * @type {number}\n * @product highstock\n * @apioption series.ohlc.data.close\n */\n /**\n * The opening value of each data point.\n *\n * @type {number}\n * @product highstock\n * @apioption series.ohlc.data.open\n */\n ''; // adds doclets above to transpilat\n /* *\n *\n * Default Export\n *\n * */\n\n return OHLCSeriesDefaults;\n });\n _registerModule(_modules, 'Series/OHLC/OHLCSeries.js', [_modules['Series/OHLC/OHLCPoint.js'], _modules['Series/OHLC/OHLCSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (OHLCPoint, OHLCSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var HLCSeries = SeriesRegistry.seriesTypes.hlc;\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Constants\n *\n * */\n var composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function onSeriesAfterSetOptions(e) {\n var options = e.options,\n dataGrouping = options.dataGrouping;\n if (dataGrouping &&\n options.useOhlcData &&\n options.id !== 'highcharts-navigator-series') {\n dataGrouping.approximation = 'ohlc';\n }\n }\n /**\n * Add useOhlcData option\n * @private\n */\n function onSeriesInit(eventOptions) {\n // eslint-disable-next-line no-invalid-this\n var series = this,\n options = eventOptions.options;\n if (options.useOhlcData &&\n options.id !== 'highcharts-navigator-series') {\n extend(series, {\n pointValKey: OHLCSeries.prototype.pointValKey,\n // keys: ohlcProto.keys, // @todo potentially nonsense\n pointArrayMap: OHLCSeries.prototype.pointArrayMap,\n toYData: OHLCSeries.prototype.toYData\n });\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * The ohlc series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.ohlc\n *\n * @augments Highcharts.Series\n */\n var OHLCSeries = /** @class */ (function (_super) {\n __extends(OHLCSeries, _super);\n function OHLCSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n OHLCSeries.compose = function (SeriesClass) {\n var _args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n _args[_i - 1] = arguments[_i];\n }\n if (composedMembers.indexOf(SeriesClass) === -1) {\n composedMembers.push(SeriesClass);\n addEvent(SeriesClass, 'afterSetOptions', onSeriesAfterSetOptions);\n addEvent(SeriesClass, 'init', onSeriesInit);\n }\n };\n /* *\n *\n * Functions\n *\n * */\n OHLCSeries.prototype.getPointPath = function (point, graphic) {\n var path = _super.prototype.getPointPath.call(this,\n point,\n graphic),\n strokeWidth = graphic.strokeWidth(),\n crispCorr = (strokeWidth % 2) / 2,\n crispX = Math.round(point.plotX) - crispCorr,\n halfWidth = Math.round(point.shapeArgs.width / 2);\n var plotOpen = point.plotOpen;\n // crisp vector coordinates\n if (point.open !== null) {\n plotOpen = Math.round(point.plotOpen) + crispCorr;\n path.push(['M', crispX, plotOpen], ['L', crispX - halfWidth, plotOpen]);\n _super.prototype.extendStem.call(this, path, strokeWidth / 2, plotOpen);\n }\n return path;\n };\n /**\n * Postprocess mapping between options and SVG attributes\n * @private\n */\n OHLCSeries.prototype.pointAttribs = function (point, state) {\n var attribs = _super.prototype.pointAttribs.call(this,\n point,\n state),\n options = this.options;\n delete attribs.fill;\n if (!point.options.color &&\n options.upColor &&\n point.open < point.close) {\n attribs.stroke = options.upColor;\n }\n return attribs;\n };\n OHLCSeries.prototype.toYData = function (point) {\n // return a plain array for speedy calculation\n return [point.open, point.high, point.low, point.close];\n };\n OHLCSeries.defaultOptions = merge(HLCSeries.defaultOptions, OHLCSeriesDefaults);\n return OHLCSeries;\n }(HLCSeries));\n extend(OHLCSeries.prototype, {\n pointClass: OHLCPoint,\n pointArrayMap: ['open', 'high', 'low', 'close']\n });\n SeriesRegistry.registerSeriesType('ohlc', OHLCSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return OHLCSeries;\n });\n _registerModule(_modules, 'Series/Candlestick/CandlestickSeriesDefaults.js', [_modules['Core/Defaults.js'], _modules['Core/Utilities.js']], function (D, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var merge = U.merge;\n /* *\n *\n * API Options\n *\n * */\n /**\n * A candlestick chart is a style of financial chart used to describe\n * price movements over time.\n *\n * @sample stock/demo/candlestick/\n * Candlestick chart\n *\n * @extends plotOptions.ohlc\n * @excluding borderColor,borderRadius,borderWidth\n * @product highstock\n * @optionparent plotOptions.candlestick\n */\n var CandlestickSeriesDefaults = {\n /**\n * The specific line color for up candle sticks. The default is to\n * inherit the general `lineColor` setting.\n *\n * @sample {highstock} stock/plotoptions/candlestick-linecolor/\n * Candlestick line colors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 1.3.6\n * @product highstock\n * @apioption plotOptions.candlestick.upLineColor\n */\n states: {\n /**\n * @extends plotOptions.column.states.hover\n * @product highstock\n */\n hover: {\n /**\n * The pixel width of the line/border around the\n * candlestick.\n *\n * @product highstock\n */\n lineWidth: 2\n }\n },\n /**\n * @type {number|null}\n * @product highstock\n */\n threshold: null,\n /**\n * The color of the line/border of the candlestick.\n *\n * In styled mode,\n the line stroke can be set with the\n * `.highcharts-candlestick-series .highcahrts-point` rule.\n *\n * @see [upLineColor](#plotOptions.candlestick.upLineColor)\n *\n * @sample {highstock} stock/plotoptions/candlestick-linecolor/\n * Candlestick line colors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highstock\n */\n lineColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The pixel width of the candlestick line/border. Defaults to `1`.\n *\n *\n * In styled mode,\n the line stroke width can be set with the\n * `.highcharts-candlestick-series .highcahrts-point` rule.\n *\n * @product highstock\n */\n lineWidth: 1,\n /**\n * The fill color of the candlestick when values are rising.\n *\n * In styled mode,\n the up color can be set with the\n * `.highcharts-candlestick-series .highcharts-point-up` rule.\n *\n * @sample {highstock} stock/plotoptions/candlestick-color/\n * Custom colors\n * @sample {highstock} highcharts/css/candlestick/\n * Colors in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highstock\n */\n upColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * @product highstock\n */\n stickyTracking: true\n };\n /**\n * A `candlestick` series. If the [type](#series.candlestick.type)\n * option is not specified, it is inherited from [chart.type](\n * #chart.type).\n *\n * @type {*}\n * @extends series,plotOptions.candlestick\n * @excluding dataParser, dataURL, marker\n * @product highstock\n * @apioption series.candlestick\n */\n /**\n * An array of data points for the series. For the `candlestick` series\n * type, points can be given in the following ways:\n *\n * 1. An array of arrays with 5 or 4 values. In this case, the values correspond\n * to `x,open,high,low,close`. If the first value is a string, it is applied\n * as the name of the point, and the `x` value is inferred. The `x` value can\n * also be omitted, in which case the inner arrays should be of length 4.\n * Then the `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 7, 2, 0, 4],\n * [1, 1, 4, 2, 8],\n * [2, 3, 3, 9, 3]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.candlestick.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * open: 9,\n * high: 2,\n * low: 4,\n * close: 6,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * open: 1,\n * high: 4,\n * low: 7,\n * close: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array|Array<(number|string),number,number,number,number>|*>}\n * @extends series.ohlc.data\n * @excluding y\n * @product highstock\n * @apioption series.candlestick.data\n */\n ''; // adds doclets above to transpilat\n /* *\n *\n * Default Export\n *\n * */\n\n return CandlestickSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Candlestick/CandlestickSeries.js', [_modules['Series/Candlestick/CandlestickSeriesDefaults.js'], _modules['Core/Defaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (CandlestickSeriesDefaults, D, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defaultOptions = D.defaultOptions;\n var _a = SeriesRegistry.seriesTypes,\n ColumnSeries = _a.column,\n OHLCSeries = _a.ohlc;\n var merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * The candlestick series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.candlestick\n *\n * @augments Highcharts.seriesTypes.ohlc\n */\n var CandlestickSeries = /** @class */ (function (_super) {\n __extends(CandlestickSeries, _super);\n function CandlestickSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Postprocess mapping between options and SVG attributes\n *\n * @private\n * @function Highcharts.seriesTypes.candlestick#pointAttribs\n */\n CandlestickSeries.prototype.pointAttribs = function (point, state) {\n var attribs = ColumnSeries.prototype.pointAttribs.call(this,\n point,\n state),\n options = this.options,\n isUp = point.open < point.close,\n stroke = options.lineColor || this.color,\n color = point.color || this.color; // (#14826)\n attribs['stroke-width'] = options.lineWidth;\n attribs.fill = point.options.color ||\n (isUp ? (options.upColor || color) : color);\n attribs.stroke = point.options.lineColor ||\n (isUp ? (options.upLineColor || stroke) : stroke);\n // Select or hover states\n if (state) {\n var stateOptions = options.states[state];\n attribs.fill = stateOptions.color || attribs.fill;\n attribs.stroke = stateOptions.lineColor || attribs.stroke;\n attribs['stroke-width'] =\n stateOptions.lineWidth || attribs['stroke-width'];\n }\n return attribs;\n };\n /**\n * Draw the data points.\n *\n * @private\n * @function Highcharts.seriesTypes.candlestick#drawPoints\n */\n CandlestickSeries.prototype.drawPoints = function () {\n var series = this,\n points = series.points,\n chart = series.chart,\n reversedYAxis = series.yAxis.reversed;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var graphic = point.graphic,\n plotOpen = void 0,\n plotClose = void 0,\n topBox = void 0,\n bottomBox = void 0,\n hasTopWhisker = void 0,\n hasBottomWhisker = void 0,\n crispCorr = void 0,\n crispX = void 0,\n path = void 0,\n halfWidth = void 0;\n var isNew = !graphic;\n if (typeof point.plotY !== 'undefined') {\n if (!graphic) {\n point.graphic = graphic = chart.renderer.path()\n .add(series.group);\n }\n if (!series.chart.styledMode) {\n graphic\n .attr(series.pointAttribs(point, (point.selected && 'select'))) // #3897\n .shadow(series.options.shadow);\n }\n // Crisp vector coordinates\n crispCorr = (graphic.strokeWidth() % 2) / 2;\n // #2596:\n crispX = Math.round(point.plotX) - crispCorr;\n plotOpen = point.plotOpen;\n plotClose = point.plotClose;\n topBox = Math.min(plotOpen, plotClose);\n bottomBox = Math.max(plotOpen, plotClose);\n halfWidth = Math.round(point.shapeArgs.width / 2);\n hasTopWhisker = reversedYAxis ?\n bottomBox !== point.yBottom :\n Math.round(topBox) !==\n Math.round(point.plotHigh);\n hasBottomWhisker = reversedYAxis ?\n Math.round(topBox) !==\n Math.round(point.plotHigh) :\n bottomBox !== point.yBottom;\n topBox = Math.round(topBox) + crispCorr;\n bottomBox = Math.round(bottomBox) + crispCorr;\n // Create the path. Due to a bug in Chrome 49, the path is\n // first instanciated with no values, then the values\n // pushed. For unknown reasons, instanciating the path array\n // with all the values would lead to a crash when updating\n // frequently (#5193).\n path = [];\n path.push(['M', crispX - halfWidth, bottomBox], ['L', crispX - halfWidth, topBox], ['L', crispX + halfWidth, topBox], ['L', crispX + halfWidth, bottomBox], ['Z'], // Ensure a nice rectangle #2602\n ['M', crispX, topBox], [\n 'L',\n // #460, #2094\n crispX,\n hasTopWhisker ?\n Math.round(reversedYAxis ?\n point.yBottom :\n point.plotHigh) :\n topBox\n ], ['M', crispX, bottomBox], [\n 'L',\n // #460, #2094\n crispX,\n hasBottomWhisker ?\n Math.round(reversedYAxis ?\n point.plotHigh :\n point.yBottom) :\n bottomBox\n ]);\n graphic[isNew ? 'attr' : 'animate']({ d: path })\n .addClass(point.getClassName(), true);\n }\n }\n };\n CandlestickSeries.defaultOptions = merge(OHLCSeries.defaultOptions, defaultOptions.plotOptions, { tooltip: OHLCSeries.defaultOptions.tooltip }, CandlestickSeriesDefaults);\n return CandlestickSeries;\n }(OHLCSeries));\n SeriesRegistry.registerSeriesType('candlestick', CandlestickSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return CandlestickSeries;\n });\n _registerModule(_modules, 'Series/Flags/FlagsPoint.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var ColumnPoint = SeriesRegistry.seriesTypes.column.prototype.pointClass;\n var isNumber = U.isNumber;\n /* *\n *\n * Class\n *\n * */\n var FlagsPoint = /** @class */ (function (_super) {\n __extends(FlagsPoint, _super);\n function FlagsPoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.options = void 0;\n _this.series = void 0;\n _this.ttBelow = false;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n FlagsPoint.prototype.isValid = function () {\n // #9233 - Prevent from treating flags as null points (even if\n // they have no y values defined).\n return isNumber(this.y) || typeof this.y === 'undefined';\n };\n /**\n * @private\n */\n FlagsPoint.prototype.hasNewShapeType = function () {\n var shape = this.options.shape || this.series.options.shape;\n return this.graphic && shape && shape !== this.graphic.symbolKey;\n };\n return FlagsPoint;\n }(ColumnPoint));\n /* *\n *\n * Default Export\n *\n * */\n\n return FlagsPoint;\n });\n _registerModule(_modules, 'Series/Flags/FlagsSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Flags are used to mark events in stock charts. They can be added on the\n * timeline, or attached to a specific series.\n *\n * @sample stock/demo/flags-general/\n * Flags on a line series\n *\n * @extends plotOptions.column\n * @excluding animation, borderColor, borderRadius, borderWidth,\n * colorByPoint, cropThreshold, dataGrouping, pointPadding,\n * pointWidth, turboThreshold\n * @product highstock\n * @optionparent plotOptions.flags\n */\n var FlagsSeriesDefaults = {\n /**\n * In case the flag is placed on a series, on what point key to place\n * it. Line and columns have one key, `y`. In range or OHLC-type series,\n * however, the flag can optionally be placed on the `open`, `high`,\n * `low` or `close` key.\n *\n * @sample {highstock} stock/plotoptions/flags-onkey/\n * Range series, flag on high\n *\n * @type {string}\n * @default y\n * @since 4.2.2\n * @product highstock\n * @validvalue [\"y\", \"open\", \"high\", \"low\", \"close\"]\n * @apioption plotOptions.flags.onKey\n */\n /**\n * The id of the series that the flags should be drawn on. If no id\n * is given, the flags are drawn on the x axis.\n *\n * @sample {highstock} stock/plotoptions/flags/\n * Flags on series and on x axis\n *\n * @type {string}\n * @product highstock\n * @apioption plotOptions.flags.onSeries\n */\n pointRange: 0,\n /**\n * Whether the flags are allowed to overlap sideways. If `false`, the\n * flags are moved sideways using an algorithm that seeks to place every\n * flag as close as possible to its original position.\n *\n * @sample {highstock} stock/plotoptions/flags-allowoverlapx\n * Allow sideways overlap\n *\n * @since 6.0.4\n */\n allowOverlapX: false,\n /**\n * The shape of the marker. Can be one of \"flag\", \"circlepin\",\n * \"squarepin\", or an image of the format `url(/path-to-image.jpg)`.\n * Individual shapes can also be set for each point.\n *\n * @sample {highstock} stock/plotoptions/flags/\n * Different shapes\n *\n * @type {Highcharts.FlagsShapeValue}\n * @product highstock\n */\n shape: 'flag',\n /**\n * When multiple flags in the same series fall on the same value, this\n * number determines the vertical offset between them.\n *\n * @sample {highstock} stock/plotoptions/flags-stackdistance/\n * A greater stack distance\n *\n * @product highstock\n */\n stackDistance: 12,\n /**\n * Text alignment for the text inside the flag.\n *\n * @since 5.0.0\n * @product highstock\n * @validvalue [\"left\", \"center\", \"right\"]\n */\n textAlign: 'center',\n /**\n * Specific tooltip options for flag series. Flag series tooltips are\n * different from most other types in that a flag doesn't have a data\n * value, so the tooltip rather displays the `text` option for each\n * point.\n *\n * @extends plotOptions.series.tooltip\n * @excluding changeDecimals, valueDecimals, valuePrefix, valueSuffix\n * @product highstock\n */\n tooltip: {\n pointFormat: '{point.text}'\n },\n /**\n * @type {number|null}\n */\n threshold: null,\n /**\n * The text to display on each flag. This can be defined on series\n * level, or individually for each point. Defaults to `\"A\"`.\n *\n * @type {string}\n * @default A\n * @product highstock\n * @apioption plotOptions.flags.title\n */\n /**\n * The y position of the top left corner of the flag relative to either\n * the series (if onSeries is defined), or the x axis. Defaults to\n * `-30`.\n *\n * @product highstock\n */\n y: -30,\n /**\n * Whether to use HTML to render the flag texts. Using HTML allows for\n * advanced formatting, images and reliable bi-directional text\n * rendering. Note that exported images won't respect the HTML, and that\n * HTML won't respect Z-index settings.\n *\n * @type {boolean}\n * @default false\n * @since 1.3\n * @product highstock\n * @apioption plotOptions.flags.useHTML\n */\n /**\n * Fixed width of the flag's shape. By default, width is autocalculated\n * according to the flag's title.\n *\n * @sample {highstock} stock/demo/flags-shapes/\n * Flags with fixed width\n *\n * @type {number}\n * @product highstock\n * @apioption plotOptions.flags.width\n */\n /**\n * Fixed height of the flag's shape. By default, height is\n * autocalculated according to the flag's title.\n *\n * @type {number}\n * @product highstock\n * @apioption plotOptions.flags.height\n */\n /**\n * The fill color for the flags.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n */\n fillColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The color of the line/border of the flag.\n *\n * In styled mode, the stroke is set in the\n * `.highcharts-flag-series.highcharts-point` rule.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highstock\n * @apioption plotOptions.flags.lineColor\n */\n /**\n * The pixel width of the flag's line/border.\n *\n * @product highstock\n */\n lineWidth: 1,\n states: {\n /**\n * @extends plotOptions.column.states.hover\n * @product highstock\n */\n hover: {\n /**\n * The color of the line/border of the flag.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n */\n lineColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The fill or background color of the flag.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n */\n fillColor: \"#ccd6eb\" /* Palette.highlightColor20 */\n }\n },\n /**\n * The text styles of the flag.\n *\n * In styled mode, the styles are set in the\n * `.highcharts-flag-series .highcharts-point` rule.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontSize\": \"11px\", \"fontWeight\": \"bold\"}\n * @product highstock\n */\n style: {\n /** @ignore-option */\n fontSize: '11px',\n /** @ignore-option */\n fontWeight: 'bold'\n }\n };\n /**\n * A `flags` series. If the [type](#series.flags.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.flags\n * @excluding animation, borderColor, borderRadius, borderWidth, colorByPoint,\n * connectNulls, cropThreshold, dashStyle, dataGrouping, dataParser,\n * dataURL, gapSize, gapUnit, linecap, lineWidth, marker,\n * pointPadding, pointWidth, step, turboThreshold, useOhlcData\n * @product highstock\n * @apioption series.flags\n */\n /**\n * An array of data points for the series. For the `flags` series type,\n * points can be given in the following ways:\n *\n * 1. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.flags.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * title: \"A\",\n * text: \"First event\"\n * }, {\n * x: 1,\n * title: \"B\",\n * text: \"Second event\"\n * }]\n * ```\n *\n * @type {Array<*>}\n * @extends series.line.data\n * @excluding dataLabels, marker, name, y\n * @product highstock\n * @apioption series.flags.data\n */\n /**\n * The fill color of an individual flag. By default it inherits from\n * the series color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n * @apioption series.flags.data.fillColor\n */\n /**\n * The longer text to be shown in the flag's tooltip.\n *\n * @type {string}\n * @product highstock\n * @apioption series.flags.data.text\n */\n /**\n * The short text to be shown on the flag.\n *\n * @type {string}\n * @product highstock\n * @apioption series.flags.data.title\n */\n ''; // keeps doclets above in transpiled file\n /* *\n *\n * Default Export\n *\n * */\n\n return FlagsSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Flags/FlagsSymbols.js', [_modules['Core/Renderer/RendererRegistry.js']], function (RendererRegistry) {\n /* *\n *\n * Imports\n *\n * */\n /* *\n *\n * Composition\n *\n * */\n var FlagsSymbols;\n (function (FlagsSymbols) {\n /* *\n *\n * Constants\n *\n * */\n var modifiedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(SVGRendererClass) {\n if (modifiedMembers.indexOf(SVGRendererClass) === -1) {\n modifiedMembers.push(SVGRendererClass);\n var symbols = SVGRendererClass.prototype.symbols;\n symbols.flag = flag;\n createPinSymbol(symbols, 'circle');\n createPinSymbol(symbols, 'square');\n }\n var RendererClass = RendererRegistry.getRendererType();\n // The symbol callbacks are generated on the SVGRenderer object in all\n // browsers. Even VML browsers need this in order to generate shapes in\n // export. Now share them with the VMLRenderer.\n if (modifiedMembers.indexOf(RendererClass)) {\n modifiedMembers.push(RendererClass);\n var symbols = SVGRendererClass.prototype.symbols,\n vmlSymbols = RendererClass.prototype.symbols;\n vmlSymbols.circlepin = symbols.circlepin;\n vmlSymbols.flag = symbols.flag.bind(symbols);\n vmlSymbols.squarepin = symbols.squarepin;\n }\n }\n FlagsSymbols.compose = compose;\n /**\n * Create the flag icon with anchor.\n * @private\n */\n function flag(x, y, w, h, options) {\n var anchorX = (options && options.anchorX) || x,\n anchorY = (options && options.anchorY) || y;\n // To do: unwanted any cast because symbols.circle has wrong type, it\n // actually returns an SVGPathArray\n var path = this.circle(anchorX - 1,\n anchorY - 1, 2, 2);\n path.push(['M', anchorX, anchorY], ['L', x, y + h], ['L', x, y], ['L', x + w, y], ['L', x + w, y + h], ['L', x, y + h], ['Z']);\n return path;\n }\n /**\n * Create the circlepin and squarepin icons with anchor.\n * @private\n */\n function createPinSymbol(symbols, shape) {\n symbols[(shape + 'pin')] = function (x, y, w, h, options) {\n var anchorX = options && options.anchorX,\n anchorY = options && options.anchorY;\n var path;\n // For single-letter flags, make sure circular flags are not taller\n // than their width\n if (shape === 'circle' && h > w) {\n x -= Math.round((h - w) / 2);\n w = h;\n }\n path = (symbols[shape])(x, y, w, h);\n if (anchorX && anchorY) {\n /**\n * If the label is below the anchor, draw the connecting line\n * from the top edge of the label, otherwise start drawing from\n * the bottom edge\n */\n var labelX = anchorX;\n if (shape === 'circle') {\n labelX = x + w / 2;\n }\n else {\n var startSeg = path[0];\n var endSeg = path[1];\n if (startSeg[0] === 'M' && endSeg[0] === 'L') {\n labelX = (startSeg[1] + endSeg[1]) / 2;\n }\n }\n var labelY = (y > anchorY) ? y : y + h;\n path.push([\n 'M',\n labelX,\n labelY\n ], [\n 'L',\n anchorX,\n anchorY\n ]);\n path = path.concat(symbols.circle(anchorX - 1, anchorY - 1, 2, 2));\n }\n return path;\n };\n }\n })(FlagsSymbols || (FlagsSymbols = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return FlagsSymbols;\n });\n _registerModule(_modules, 'Series/OnSeriesComposition.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (ColumnSeries, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var columnProto = ColumnSeries.prototype;\n var seriesProto = Series.prototype;\n var defined = U.defined,\n stableSort = U.stableSort;\n /* *\n *\n * Composition\n *\n * */\n var OnSeriesComposition;\n (function (OnSeriesComposition) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Properties\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(SeriesClass) {\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto_1 = SeriesClass.prototype;\n seriesProto_1.getPlotBox = getPlotBox;\n seriesProto_1.translate = translate;\n }\n return SeriesClass;\n }\n OnSeriesComposition.compose = compose;\n /**\n * Override getPlotBox. If the onSeries option is valid, return the plot box\n * of the onSeries, otherwise proceed as usual.\n *\n * @private\n */\n function getPlotBox(name) {\n return seriesProto.getPlotBox.call((this.options.onSeries &&\n this.chart.get(this.options.onSeries)) || this, name);\n }\n OnSeriesComposition.getPlotBox = getPlotBox;\n /**\n * Extend the translate method by placing the point on the related series\n *\n * @private\n */\n function translate() {\n columnProto.translate.apply(this);\n var series = this,\n options = series.options,\n chart = series.chart,\n points = series.points,\n optionsOnSeries = options.onSeries,\n onSeries = (optionsOnSeries &&\n chart.get(optionsOnSeries)),\n step = onSeries && onSeries.options.step,\n onData = (onSeries && onSeries.points),\n inverted = chart.inverted,\n xAxis = series.xAxis,\n yAxis = series.yAxis;\n var cursor = points.length - 1,\n point,\n lastPoint,\n onKey = options.onKey || 'y',\n i = onData && onData.length,\n xOffset = 0,\n leftPoint,\n lastX,\n rightPoint,\n currentDataGrouping,\n distanceRatio;\n // relate to a master series\n if (onSeries && onSeries.visible && i) {\n xOffset = (onSeries.pointXOffset || 0) + (onSeries.barW || 0) / 2;\n currentDataGrouping = onSeries.currentDataGrouping;\n lastX = (onData[i - 1].x +\n (currentDataGrouping ? currentDataGrouping.totalRange : 0)); // #2374\n // sort the data points\n stableSort(points, function (a, b) { return (a.x - b.x); });\n onKey = 'plot' + onKey[0].toUpperCase() + onKey.substr(1);\n while (i-- && points[cursor]) {\n leftPoint = onData[i];\n point = points[cursor];\n point.y = leftPoint.y;\n if (leftPoint.x <= point.x &&\n typeof leftPoint[onKey] !== 'undefined') {\n if (point.x <= lastX) { // #803\n point.plotY = leftPoint[onKey];\n // interpolate between points, #666\n if (leftPoint.x < point.x &&\n !step) {\n rightPoint = onData[i + 1];\n if (rightPoint &&\n typeof rightPoint[onKey] !== 'undefined') {\n // the distance ratio, between 0 and 1\n distanceRatio =\n (point.x - leftPoint.x) /\n (rightPoint.x - leftPoint.x);\n point.plotY +=\n distanceRatio *\n // the plotY distance\n (rightPoint[onKey] - leftPoint[onKey]);\n point.y +=\n distanceRatio *\n (rightPoint.y - leftPoint.y);\n }\n }\n }\n cursor--;\n i++; // check again for points in the same x position\n if (cursor < 0) {\n break;\n }\n }\n }\n }\n // Add plotY position and handle stacking\n points.forEach(function (point, i) {\n var stackIndex;\n point.plotX += xOffset; // #2049\n // Undefined plotY means the point is either on axis, outside series\n // range or hidden series. If the series is outside the range of the\n // x axis it should fall through with an undefined plotY, but then\n // we must remove the shapeArgs (#847). For inverted charts, we need\n // to calculate position anyway, because series.invertGroups is not\n // defined\n if (typeof point.plotY === 'undefined' || inverted) {\n if (point.plotX >= 0 &&\n point.plotX <= xAxis.len) {\n // We're inside xAxis range\n if (inverted) {\n point.plotY = xAxis.translate(point.x, 0, 1, 0, 1);\n point.plotX = defined(point.y) ?\n yAxis.translate(point.y, 0, 0, 0, 1) :\n 0;\n }\n else {\n point.plotY = (xAxis.opposite ? 0 : series.yAxis.len) +\n xAxis.offset; // For the windbarb demo\n }\n }\n else {\n point.shapeArgs = {}; // 847\n }\n }\n // if multiple flags appear at the same x, order them into a stack\n lastPoint = points[i - 1];\n if (lastPoint && lastPoint.plotX === point.plotX) {\n if (typeof lastPoint.stackIndex === 'undefined') {\n lastPoint.stackIndex = 0;\n }\n stackIndex = lastPoint.stackIndex + 1;\n }\n point.stackIndex = stackIndex; // #3639\n });\n this.onSeries = onSeries;\n }\n OnSeriesComposition.translate = translate;\n })(OnSeriesComposition || (OnSeriesComposition = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return OnSeriesComposition;\n });\n _registerModule(_modules, 'Series/Flags/FlagsSeries.js', [_modules['Series/Flags/FlagsPoint.js'], _modules['Series/Flags/FlagsSeriesDefaults.js'], _modules['Series/Flags/FlagsSymbols.js'], _modules['Core/Globals.js'], _modules['Series/OnSeriesComposition.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (FlagsPoint, FlagsSeriesDefaults, FlagsSymbols, H, OnSeriesComposition, R, SeriesRegistry, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var noop = H.noop;\n var distribute = R.distribute;\n var Series = SeriesRegistry.series,\n ColumnSeries = SeriesRegistry.seriesTypes.column;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n merge = U.merge,\n objectEach = U.objectEach,\n wrap = U.wrap;\n /* *\n *\n * Classes\n *\n * */\n /**\n * The Flags series.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.flags\n *\n * @augments Highcharts.Series\n */\n var FlagsSeries = /** @class */ (function (_super) {\n __extends(FlagsSeries, _super);\n function FlagsSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Disable animation, but keep clipping (#8546).\n * @private\n */\n FlagsSeries.prototype.animate = function (init) {\n if (init) {\n this.setClip();\n }\n };\n /**\n * Draw the markers.\n * @private\n */\n FlagsSeries.prototype.drawPoints = function () {\n var series = this,\n points = series.points,\n chart = series.chart,\n renderer = chart.renderer,\n inverted = chart.inverted,\n options = series.options,\n optionsY = options.y,\n yAxis = series.yAxis,\n boxesMap = {},\n boxes = [];\n var plotX,\n plotY,\n shape,\n i,\n point,\n graphic,\n stackIndex,\n anchorY,\n attribs,\n outsideRight,\n centered;\n i = points.length;\n while (i--) {\n point = points[i];\n outsideRight =\n (inverted ? point.plotY : point.plotX) >\n series.xAxis.len;\n plotX = point.plotX;\n stackIndex = point.stackIndex;\n shape = point.options.shape || options.shape;\n plotY = point.plotY;\n if (typeof plotY !== 'undefined') {\n plotY = point.plotY + optionsY -\n (typeof stackIndex !== 'undefined' &&\n (stackIndex * options.stackDistance));\n }\n // skip connectors for higher level stacked points\n point.anchorX = stackIndex ? void 0 : point.plotX;\n anchorY = stackIndex ? void 0 : point.plotY;\n centered = shape !== 'flag';\n graphic = point.graphic;\n // Only draw the point if y is defined and the flag is within\n // the visible area\n if (typeof plotY !== 'undefined' &&\n plotX >= 0 &&\n !outsideRight) {\n // #15384\n if (graphic && point.hasNewShapeType()) {\n graphic = graphic.destroy();\n }\n // Create the flag\n if (!graphic) {\n graphic = point.graphic = renderer.label('', null, null, shape, null, null, options.useHTML)\n .addClass('highcharts-point')\n .add(series.markerGroup);\n // Add reference to the point for tracker (#6303)\n if (point.graphic.div) {\n point.graphic.div.point = point;\n }\n graphic.isNew = true;\n }\n graphic.attr({\n align: centered ? 'center' : 'left',\n width: options.width,\n height: options.height,\n 'text-align': options.textAlign\n });\n if (!chart.styledMode) {\n graphic\n .attr(series.pointAttribs(point))\n .css(merge(options.style, point.style))\n .shadow(options.shadow);\n }\n if (plotX > 0) { // #3119\n plotX -= graphic.strokeWidth() % 2; // #4285\n }\n // Plant the flag\n attribs = {\n y: plotY,\n anchorY: anchorY\n };\n if (options.allowOverlapX) {\n attribs.x = plotX;\n attribs.anchorX = point.anchorX;\n }\n graphic.attr({\n text: point.options.title || options.title || 'A'\n })[graphic.isNew ? 'attr' : 'animate'](attribs);\n // Rig for the distribute function\n if (!options.allowOverlapX) {\n if (!boxesMap[point.plotX]) {\n boxesMap[point.plotX] = {\n align: centered ? 0.5 : 0,\n size: graphic.width,\n target: plotX,\n anchorX: plotX\n };\n }\n else {\n boxesMap[point.plotX].size = Math.max(boxesMap[point.plotX].size, graphic.width);\n }\n }\n // Set the tooltip anchor position\n point.tooltipPos = [\n plotX,\n plotY + yAxis.pos - chart.plotTop\n ]; // #6327\n }\n else if (graphic) {\n point.graphic = graphic.destroy();\n }\n }\n // Handle X-dimension overlapping\n if (!options.allowOverlapX) {\n var maxDistance_1 = 100;\n objectEach(boxesMap, function (box) {\n box.plotX = box.anchorX;\n boxes.push(box);\n maxDistance_1 = Math.max(box.size, maxDistance_1);\n });\n // If necessary (for overlapping or long labels) distribute it\n // depending on the label width or a hardcoded value, #16041.\n distribute(boxes, inverted ? yAxis.len : this.xAxis.len, maxDistance_1);\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point_1 = points_1[_i];\n var plotX_1 = point_1.plotX,\n graphic_1 = point_1.graphic,\n box = graphic_1 && boxesMap[plotX_1];\n if (box && graphic_1) {\n // Hide flag when its box position is not specified\n // (#8573, #9299)\n if (!defined(box.pos)) {\n graphic_1.hide().isNew = true;\n }\n else {\n graphic_1[graphic_1.isNew ? 'attr' : 'animate']({\n x: box.pos + (box.align || 0) * box.size,\n anchorX: point_1.anchorX\n }).show().isNew = false;\n }\n }\n }\n }\n // Can be a mix of SVG and HTML and we need events for both (#6303)\n if (options.useHTML && series.markerGroup) {\n wrap(series.markerGroup, 'on', function (proceed) {\n return SVGElement.prototype.on.apply(\n // for HTML\n // eslint-disable-next-line no-invalid-this\n proceed.apply(this, [].slice.call(arguments, 1)), \n // and for SVG\n [].slice.call(arguments, 1));\n });\n }\n };\n /**\n * Extend the column trackers with listeners to expand and contract\n * stacks.\n * @private\n */\n FlagsSeries.prototype.drawTracker = function () {\n var series = this,\n points = series.points;\n _super.prototype.drawTracker.call(this);\n var _loop_1 = function (point) {\n var graphic = point.graphic;\n if (graphic) {\n if (point.unbindMouseOver) {\n point.unbindMouseOver();\n }\n point.unbindMouseOver = addEvent(graphic.element, 'mouseover', function () {\n // Raise this point\n if (point.stackIndex > 0 &&\n !point.raised) {\n point._y = graphic.y;\n graphic.attr({\n y: point._y - 8\n });\n point.raised = true;\n }\n // Revert other raised points\n for (var _i = 0, points_3 = points; _i < points_3.length; _i++) {\n var otherPoint = points_3[_i];\n if (otherPoint !== point &&\n otherPoint.raised &&\n otherPoint.graphic) {\n otherPoint.graphic.attr({\n y: otherPoint._y\n });\n otherPoint.raised = false;\n }\n }\n });\n }\n };\n /* *\n * Bring each stacked flag up on mouse over, this allows readability\n * of vertically stacked elements as well as tight points on the x\n * axis. #1924.\n */\n for (var _i = 0, points_2 = points; _i < points_2.length; _i++) {\n var point = points_2[_i];\n _loop_1(point);\n }\n };\n /**\n * Get presentational attributes\n * @private\n */\n FlagsSeries.prototype.pointAttribs = function (point, state) {\n var options = this.options,\n color = (point && point.color) || this.color;\n var lineColor = options.lineColor,\n lineWidth = (point && point.lineWidth),\n fill = (point && point.fillColor) || options.fillColor;\n if (state) {\n fill = options.states[state].fillColor;\n lineColor = options.states[state].lineColor;\n lineWidth = options.states[state].lineWidth;\n }\n return {\n fill: fill || color,\n stroke: lineColor || color,\n 'stroke-width': lineWidth || options.lineWidth || 0\n };\n };\n /**\n * @private\n */\n FlagsSeries.prototype.setClip = function () {\n Series.prototype.setClip.apply(this, arguments);\n if (this.options.clip !== false &&\n this.sharedClipKey &&\n this.markerGroup) {\n this.markerGroup.clip(this.chart.sharedClips[this.sharedClipKey]);\n }\n };\n FlagsSeries.compose = FlagsSymbols.compose;\n FlagsSeries.defaultOptions = merge(ColumnSeries.defaultOptions, FlagsSeriesDefaults);\n return FlagsSeries;\n }(ColumnSeries));\n OnSeriesComposition.compose(FlagsSeries);\n extend(FlagsSeries.prototype, {\n allowDG: false,\n forceCrop: true,\n invertible: false,\n noSharedTooltip: true,\n pointClass: FlagsPoint,\n sorted: false,\n takeOrdinalPosition: false,\n trackerGroups: ['markerGroup'],\n buildKDTree: noop,\n /**\n * Inherit the initialization from base Series.\n * @private\n */\n init: Series.prototype.init\n });\n SeriesRegistry.registerSeriesType('flags', FlagsSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"circlepin\"|\"flag\"|\"squarepin\"} Highcharts.FlagsShapeValue\n */\n ''; // detach doclets above\n\n return FlagsSeries;\n });\n _registerModule(_modules, 'Core/Chart/StockChart.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Defaults.js'], _modules['Stock/Navigator/NavigatorDefaults.js'], _modules['Stock/RangeSelector/RangeSelectorDefaults.js'], _modules['Stock/Scrollbar/ScrollbarDefaults.js'], _modules['Core/Series/Series.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (Axis, Chart, F, D, NavigatorDefaults, RangeSelectorDefaults, ScrollbarDefaults, Series, SVGRenderer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var format = F.format;\n var getOptions = D.getOptions;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n defined = U.defined,\n extend = U.extend,\n find = U.find,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Class\n *\n * */\n /**\n * Stock-optimized chart. Use {@link Highcharts.Chart|Chart} for common charts.\n *\n * @requires modules/stock\n *\n * @class\n * @name Highcharts.StockChart\n * @extends Highcharts.Chart\n */\n var StockChart = /** @class */ (function (_super) {\n __extends(StockChart, _super);\n function StockChart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Initializes the chart. The constructor's arguments are passed on\n * directly.\n *\n * @function Highcharts.StockChart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.StockChart#event:init\n * @emits Highcharts.StockChart#event:afterInit\n */\n StockChart.prototype.init = function (userOptions, callback) {\n var defaultOptions = getOptions(),\n xAxisOptions = userOptions.xAxis,\n yAxisOptions = userOptions.yAxis, \n // Always disable startOnTick:true on the main axis when the\n // navigator is enabled (#1090)\n navigatorEnabled = pick(userOptions.navigator && userOptions.navigator.enabled,\n NavigatorDefaults.enabled,\n true);\n // Avoid doing these twice\n userOptions.xAxis = userOptions.yAxis = void 0;\n var options = merge({\n chart: {\n panning: {\n enabled: true,\n type: 'x'\n },\n zooming: {\n pinchType: 'x'\n }\n },\n navigator: {\n enabled: navigatorEnabled\n },\n scrollbar: {\n // #4988 - check if setOptions was called\n enabled: pick(ScrollbarDefaults.enabled,\n true)\n },\n rangeSelector: {\n // #4988 - check if setOptions was called\n enabled: pick(RangeSelectorDefaults.rangeSelector.enabled,\n true)\n },\n title: {\n text: null\n },\n tooltip: {\n split: pick(defaultOptions.tooltip.split,\n true),\n crosshairs: true\n },\n legend: {\n enabled: false\n }\n },\n userOptions, // user's options\n {\n isStock: true // internal flag\n });\n userOptions.xAxis = xAxisOptions;\n userOptions.yAxis = yAxisOptions;\n // apply X axis options to both single and multi y axes\n options.xAxis = splat(userOptions.xAxis || {}).map(function (xAxisOptions, i) {\n return merge(getDefaultAxisOptions('xAxis', xAxisOptions), defaultOptions.xAxis, // #3802\n // #7690\n defaultOptions.xAxis && defaultOptions.xAxis[i], xAxisOptions, // user options\n getForcedAxisOptions('xAxis', userOptions));\n });\n // apply Y axis options to both single and multi y axes\n options.yAxis = splat(userOptions.yAxis || {}).map(function (yAxisOptions, i) {\n return merge(getDefaultAxisOptions('yAxis', yAxisOptions), defaultOptions.yAxis, // #3802\n // #7690\n defaultOptions.yAxis && defaultOptions.yAxis[i], yAxisOptions // user options\n );\n });\n _super.prototype.init.call(this, options, callback);\n };\n /**\n * Factory for creating different axis types.\n * Extended to add stock defaults.\n *\n * @private\n * @function Highcharts.StockChart#createAxis\n * @param {string} type\n * An axis type.\n * @param {Chart.CreateAxisOptionsObject} options\n * The axis creation options.\n */\n StockChart.prototype.createAxis = function (type, options) {\n options.axis = merge(getDefaultAxisOptions(type, options.axis), options.axis, getForcedAxisOptions(type, this.userOptions));\n return _super.prototype.createAxis.call(this, type, options);\n };\n return StockChart;\n }(Chart));\n /* eslint-disable no-invalid-this, valid-jsdoc */\n (function (StockChart) {\n /**\n * Factory function for creating new stock charts. Creates a new\n * {@link Highcharts.StockChart|StockChart} object with different default\n * options than the basic Chart.\n *\n * @example\n * let chart = Highcharts.stockChart('container', {\n * series: [{\n * data: [1, 2, 3, 4, 5, 6, 7, 8, 9],\n * pointInterval: 24 * 60 * 60 * 1000\n * }]\n * });\n *\n * @function Highcharts.stockChart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure as described in the\n * [options reference](https://api.highcharts.com/highstock).\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * A function to execute when the chart object is finished loading\n * and rendering. In most cases the chart is built in one thread,\n * but in Internet Explorer version 8 or less the chart is sometimes\n * initialized before the document is ready, and in these cases the\n * chart object will not be finished synchronously. As a\n * consequence, code that relies on the newly built Chart object\n * should always run in the callback. Defining a\n * [chart.events.load](https://api.highcharts.com/highstock/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.StockChart}\n * The chart object.\n */\n function stockChart(a, b, c) {\n return new StockChart(a, b, c);\n }\n StockChart.stockChart = stockChart;\n })(StockChart || (StockChart = {}));\n /**\n * Get stock-specific default axis options.\n *\n * @private\n * @function getDefaultAxisOptions\n */\n function getDefaultAxisOptions(type, options) {\n if (type === 'xAxis') {\n return {\n minPadding: 0,\n maxPadding: 0,\n overscroll: 0,\n ordinal: true,\n title: {\n text: null\n },\n labels: {\n overflow: 'justify'\n },\n showLastLabel: true\n };\n }\n if (type === 'yAxis') {\n return {\n labels: {\n y: -2\n },\n opposite: pick(options.opposite, true),\n showLastLabel: !!(\n // #6104, show last label by default for category axes\n options.categories ||\n options.type === 'category'),\n title: {\n text: null\n }\n };\n }\n return {};\n }\n /**\n * Get stock-specific forced axis options.\n *\n * @private\n * @function getForcedAxisOptions\n */\n function getForcedAxisOptions(type, chartOptions) {\n if (type === 'xAxis') {\n // Always disable startOnTick:true on the main axis when the navigator\n // is enabled (#1090)\n var navigatorEnabled = pick(chartOptions.navigator && chartOptions.navigator.enabled,\n NavigatorDefaults.enabled,\n true);\n var axisOptions = {\n type: 'datetime',\n categories: void 0\n };\n if (navigatorEnabled) {\n axisOptions.startOnTick = false;\n axisOptions.endOnTick = false;\n }\n return axisOptions;\n }\n return {};\n }\n /* *\n *\n * Compositions\n *\n * */\n // Handle som Stock-specific series defaults, override the plotOptions before\n // series options are handled.\n addEvent(Series, 'setOptions', function (e) {\n var overrides;\n if (this.chart.options.isStock) {\n if (this.is('column') || this.is('columnrange')) {\n overrides = {\n borderWidth: 0,\n shadow: false\n };\n }\n else if (!this.is('scatter') && !this.is('sma')) {\n overrides = {\n marker: {\n enabled: false,\n radius: 2\n }\n };\n }\n if (overrides) {\n e.plotOptions[this.type] = merge(e.plotOptions[this.type], overrides);\n }\n }\n });\n // Override the automatic label alignment so that the first Y axis' labels\n // are drawn on top of the grid line, and subsequent axes are drawn outside\n addEvent(Axis, 'autoLabelAlign', function (e) {\n var chart = this.chart,\n options = this.options,\n panes = chart._labelPanes = chart._labelPanes || {},\n key,\n labelOptions = this.options.labels;\n if (this.chart.options.isStock && this.coll === 'yAxis') {\n key = options.top + ',' + options.height;\n // do it only for the first Y axis of each pane\n if (!panes[key] && labelOptions.enabled) {\n if (labelOptions.x === 15) { // default\n labelOptions.x = 0;\n }\n if (typeof labelOptions.align === 'undefined') {\n labelOptions.align = 'right';\n }\n panes[key] = this;\n e.align = 'right';\n e.preventDefault();\n }\n }\n });\n // Clear axis from label panes (#6071)\n addEvent(Axis, 'destroy', function () {\n var chart = this.chart, key = this.options && (this.options.top + ',' + this.options.height);\n if (key && chart._labelPanes && chart._labelPanes[key] === this) {\n delete chart._labelPanes[key];\n }\n });\n // Override getPlotLinePath to allow for multipane charts\n addEvent(Axis, 'getPlotLinePath', function (e) {\n var axis = this,\n series = (this.isLinked && !this.series ?\n this.linkedParent.series :\n this.series),\n chart = axis.chart,\n renderer = chart.renderer,\n axisLeft = axis.left,\n axisTop = axis.top,\n x1,\n y1,\n x2,\n y2,\n result = [],\n axes = [], // #3416 need a default array\n axes2,\n uniqueAxes,\n translatedValue = e.translatedValue,\n value = e.value,\n force = e.force,\n transVal;\n /**\n * Return the other axis based on either the axis option or on related\n * series.\n * @private\n */\n function getAxis(coll) {\n var otherColl = coll === 'xAxis' ? 'yAxis' : 'xAxis',\n opt = axis.options[otherColl];\n // Other axis indexed by number\n if (isNumber(opt)) {\n return [chart[otherColl][opt]];\n }\n // Other axis indexed by id (like navigator)\n if (isString(opt)) {\n return [chart.get(opt)];\n }\n // Auto detect based on existing series\n return series.map(function (s) {\n return s[otherColl];\n });\n }\n if ( // For stock chart, by default render paths across the panes\n // except the case when `acrossPanes` is disabled by user (#6644)\n (chart.options.isStock && e.acrossPanes !== false) &&\n // Ignore in case of colorAxis or zAxis. #3360, #3524, #6720\n axis.coll === 'xAxis' || axis.coll === 'yAxis') {\n e.preventDefault();\n // Get the related axes based on series\n axes = getAxis(axis.coll);\n // Get the related axes based options.*Axis setting #2810\n axes2 = (axis.isXAxis ? chart.yAxis : chart.xAxis);\n axes2.forEach(function (A) {\n if (defined(A.options.id) ?\n A.options.id.indexOf('navigator') === -1 :\n true) {\n var a = (A.isXAxis ? 'yAxis' : 'xAxis'),\n rax = (defined(A.options[a]) ?\n chart[a][A.options[a]] :\n chart[a][0]);\n if (axis === rax) {\n axes.push(A);\n }\n }\n });\n // Remove duplicates in the axes array. If there are no axes in the axes\n // array, we are adding an axis without data, so we need to populate\n // this with grid lines (#2796).\n uniqueAxes = axes.length ?\n [] :\n [axis.isXAxis ? chart.yAxis[0] : chart.xAxis[0]]; // #3742\n axes.forEach(function (axis2) {\n if (uniqueAxes.indexOf(axis2) === -1 &&\n // Do not draw on axis which overlap completely. #5424\n !find(uniqueAxes, function (unique) {\n return unique.pos === axis2.pos && unique.len === axis2.len;\n })) {\n uniqueAxes.push(axis2);\n }\n });\n transVal = pick(translatedValue, axis.translate(value, void 0, void 0, e.old));\n if (isNumber(transVal)) {\n if (axis.horiz) {\n uniqueAxes.forEach(function (axis2) {\n var skip;\n y1 = axis2.pos;\n y2 = y1 + axis2.len;\n x1 = x2 = Math.round(transVal + axis.transB);\n // outside plot area\n if (force !== 'pass' &&\n (x1 < axisLeft || x1 > axisLeft + axis.width)) {\n if (force) {\n x1 = x2 = clamp(x1, axisLeft, axisLeft + axis.width);\n }\n else {\n skip = true;\n }\n }\n if (!skip) {\n result.push(['M', x1, y1], ['L', x2, y2]);\n }\n });\n }\n else {\n uniqueAxes.forEach(function (axis2) {\n var skip;\n x1 = axis2.pos;\n x2 = x1 + axis2.len;\n y1 = y2 = Math.round(axisTop + axis.height - transVal);\n // outside plot area\n if (force !== 'pass' &&\n (y1 < axisTop || y1 > axisTop + axis.height)) {\n if (force) {\n y1 = y2 = clamp(y1, axisTop, axisTop + axis.height);\n }\n else {\n skip = true;\n }\n }\n if (!skip) {\n result.push(['M', x1, y1], ['L', x2, y2]);\n }\n });\n }\n }\n e.path = result.length > 0 ?\n renderer.crispPolyLine(result, e.lineWidth || 1) :\n // #3557 getPlotLinePath in regular Highcharts also returns null\n null;\n }\n });\n /**\n * Function to crisp a line with multiple segments\n *\n * @private\n * @function Highcharts.SVGRenderer#crispPolyLine\n */\n SVGRenderer.prototype.crispPolyLine = function (points, width) {\n // points format: [['M', 0, 0], ['L', 100, 0]]\n // normalize to a crisp line\n for (var i = 0; i < points.length; i = i + 2) {\n var start = points[i],\n end = points[i + 1];\n if (start[1] === end[1]) {\n // Substract due to #1129. Now bottom and left axis gridlines behave\n // the same.\n start[1] = end[1] =\n Math.round(start[1]) - (width % 2 / 2);\n }\n if (start[2] === end[2]) {\n start[2] = end[2] =\n Math.round(start[2]) + (width % 2 / 2);\n }\n }\n return points;\n };\n // Wrapper to hide the label\n addEvent(Axis, 'afterHideCrosshair', function () {\n if (this.crossLabel) {\n this.crossLabel = this.crossLabel.hide();\n }\n });\n // Extend crosshairs to also draw the label\n addEvent(Axis, 'afterDrawCrosshair', function (event) {\n // Check if the label has to be drawn\n if (!this.crosshair ||\n !this.crosshair.label ||\n !this.crosshair.label.enabled ||\n !this.cross ||\n !isNumber(this.min) ||\n !isNumber(this.max)) {\n return;\n }\n var chart = this.chart, log = this.logarithmic, options = this.crosshair.label, // the label's options\n horiz = this.horiz, // axis orientation\n opposite = this.opposite, // axis position\n left = this.left, // left position\n top = this.top, // top position\n crossLabel = this.crossLabel, // the svgElement\n posx, posy, crossBox, formatOption = options.format, formatFormat = '', limit, align, tickInside = this.options.tickPosition === 'inside', snap = this.crosshair.snap !== false, offset = 0, \n // Use last available event (#5287)\n e = event.e || (this.cross && this.cross.e), point = event.point, min = this.min, max = this.max;\n if (log) {\n min = log.lin2log(min);\n max = log.lin2log(max);\n }\n align = (horiz ? 'center' : opposite ?\n (this.labelAlign === 'right' ? 'right' : 'left') :\n (this.labelAlign === 'left' ? 'left' : 'center'));\n // If the label does not exist yet, create it.\n if (!crossLabel) {\n crossLabel = this.crossLabel = chart.renderer\n .label('', 0, void 0, options.shape || 'callout')\n .addClass('highcharts-crosshair-label highcharts-color-' + (point && point.series ?\n point.series.colorIndex :\n this.series[0] && this.series[0].colorIndex))\n .attr({\n align: options.align || align,\n padding: pick(options.padding, 8),\n r: pick(options.borderRadius, 3),\n zIndex: 2\n })\n .add(this.labelGroup);\n // Presentational\n if (!chart.styledMode) {\n crossLabel\n .attr({\n fill: options.backgroundColor ||\n point && point.series && point.series.color || // #14888\n \"#666666\" /* Palette.neutralColor60 */,\n stroke: options.borderColor || '',\n 'stroke-width': options.borderWidth || 0\n })\n .css(extend({\n color: \"#ffffff\" /* Palette.backgroundColor */,\n fontWeight: 'normal',\n fontSize: '11px',\n textAlign: 'center'\n }, options.style || {}));\n }\n }\n if (horiz) {\n posx = snap ? (point.plotX || 0) + left : e.chartX;\n posy = top + (opposite ? 0 : this.height);\n }\n else {\n posx = opposite ? this.width + left : 0;\n posy = snap ? (point.plotY || 0) + top : e.chartY;\n }\n if (!formatOption && !options.formatter) {\n if (this.dateTime) {\n formatFormat = '%b %d, %Y';\n }\n formatOption =\n '{value' + (formatFormat ? ':' + formatFormat : '') + '}';\n }\n // Show the label\n var value = snap ?\n (this.isXAxis ? point.x : point.y) :\n this.toValue(horiz ? e.chartX : e.chartY);\n // Crosshair should be rendered within Axis range (#7219). Also, the point\n // of currentPriceIndicator should be inside the plot area, #14879.\n var isInside = point && point.series ?\n point.series.isPointInside(point) :\n (isNumber(value) && value > min && value < max);\n var text = '';\n if (formatOption) {\n text = format(formatOption, { value: value }, chart);\n }\n else if (options.formatter && isNumber(value)) {\n text = options.formatter.call(this, value);\n }\n crossLabel.attr({\n text: text,\n x: posx,\n y: posy,\n visibility: isInside ? 'inherit' : 'hidden'\n });\n crossBox = crossLabel.getBBox();\n // now it is placed we can correct its position\n if (isNumber(crossLabel.y)) {\n if (horiz) {\n if ((tickInside && !opposite) || (!tickInside && opposite)) {\n posy = crossLabel.y - crossBox.height;\n }\n }\n else {\n posy = crossLabel.y - (crossBox.height / 2);\n }\n }\n // check the edges\n if (horiz) {\n limit = {\n left: left - crossBox.x,\n right: left + this.width - crossBox.x\n };\n }\n else {\n limit = {\n left: this.labelAlign === 'left' ? left : 0,\n right: this.labelAlign === 'right' ?\n left + this.width :\n chart.chartWidth\n };\n }\n // left edge\n if (crossLabel.translateX < limit.left) {\n offset = limit.left - crossLabel.translateX;\n }\n // right edge\n if (crossLabel.translateX + crossBox.width >= limit.right) {\n offset = -(crossLabel.translateX + crossBox.width - limit.right);\n }\n // show the crosslabel\n crossLabel.attr({\n x: posx + offset,\n y: posy,\n // First set x and y, then anchorX and anchorY, when box is actually\n // calculated, #5702\n anchorX: horiz ?\n posx :\n (this.opposite ? 0 : chart.chartWidth),\n anchorY: horiz ?\n (this.opposite ? chart.chartHeight : 0) :\n posy + crossBox.height / 2\n });\n });\n /**\n * Based on the data grouping options decides whether\n * the data should be cropped while processing.\n *\n * @ignore\n * @function Highcharts.Series#forceCropping\n */\n Series.prototype.forceCropping = function () {\n var chart = this.chart,\n options = this.options,\n dataGroupingOptions = options.dataGrouping,\n groupingEnabled = this.allowDG !== false && dataGroupingOptions &&\n pick(dataGroupingOptions.enabled,\n chart.options.isStock);\n return groupingEnabled;\n };\n addEvent(Chart, 'update', function (e) {\n var options = e.options;\n // Use case: enabling scrollbar from a disabled state.\n // Scrollbar needs to be initialized from a controller, Navigator in this\n // case (#6615)\n if ('scrollbar' in options && this.navigator) {\n merge(true, this.options.scrollbar, options.scrollbar);\n this.navigator.update({});\n delete options.scrollbar;\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return StockChart;\n });\n _registerModule(_modules, 'masters/modules/stock.src.js', [_modules['Core/Globals.js'], _modules['Series/DataModifyComposition.js'], _modules['Stock/Navigator/Navigator.js'], _modules['Stock/RangeSelector/RangeSelector.js'], _modules['Stock/Scrollbar/Scrollbar.js'], _modules['Core/Axis/OrdinalAxis.js'], _modules['Series/OHLC/OHLCSeries.js'], _modules['Series/Flags/FlagsSeries.js'], _modules['Core/Chart/StockChart.js']], function (Highcharts, DataModifyComposition, Navigator, RangeSelector, Scrollbar, OrdinalAxis, OHLCSeries, FlagsSeries, StockChart) {\n\n var G = Highcharts;\n // Classes\n G.Navigator = Navigator;\n G.RangeSelector = RangeSelector;\n G.Scrollbar = Scrollbar;\n G.StockChart = G.stockChart = StockChart.stockChart;\n // Compositions\n DataModifyComposition.compose(G.Series, G.Axis, G.Point);\n FlagsSeries.compose(G.Renderer);\n Navigator.compose(G.Axis, G.Chart, G.Series);\n OHLCSeries.compose(G.Series);\n OrdinalAxis.compose(G.Axis, G.Series, G.Chart);\n RangeSelector.compose(G.Axis, G.Chart);\n Scrollbar.compose(G.Axis);\n\n });\n _registerModule(_modules, 'masters/highstock.src.js', [_modules['masters/highcharts.src.js']], function (Highcharts) {\n\n Highcharts.product = 'Highstock';\n\n return Highcharts;\n });\n _modules['masters/highstock.src.js']._modules = _modules;\n return _modules['masters/highstock.src.js'];\n}));","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n if (typeof (data) === 'string') {\n data = encodeUtf8(data)\n }\n this.data = new Uint8Array(data)\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ''\n\n const path =\n ''\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"classnames\"),require(\"date-fns/isDate\"),require(\"date-fns/isValid\"),require(\"date-fns/format\"),require(\"date-fns/addMinutes\"),require(\"date-fns/addHours\"),require(\"date-fns/addDays\"),require(\"date-fns/addWeeks\"),require(\"date-fns/addMonths\"),require(\"date-fns/addQuarters\"),require(\"date-fns/addYears\"),require(\"date-fns/subDays\"),require(\"date-fns/subWeeks\"),require(\"date-fns/subMonths\"),require(\"date-fns/subQuarters\"),require(\"date-fns/subYears\"),require(\"date-fns/getSeconds\"),require(\"date-fns/getMinutes\"),require(\"date-fns/getHours\"),require(\"date-fns/getDay\"),require(\"date-fns/getDate\"),require(\"date-fns/getISOWeek\"),require(\"date-fns/getMonth\"),require(\"date-fns/getQuarter\"),require(\"date-fns/getYear\"),require(\"date-fns/getTime\"),require(\"date-fns/setSeconds\"),require(\"date-fns/setMinutes\"),require(\"date-fns/setHours\"),require(\"date-fns/setMonth\"),require(\"date-fns/setQuarter\"),require(\"date-fns/setYear\"),require(\"date-fns/min\"),require(\"date-fns/max\"),require(\"date-fns/differenceInCalendarDays\"),require(\"date-fns/differenceInCalendarMonths\"),require(\"date-fns/differenceInCalendarYears\"),require(\"date-fns/startOfDay\"),require(\"date-fns/startOfWeek\"),require(\"date-fns/startOfMonth\"),require(\"date-fns/startOfQuarter\"),require(\"date-fns/startOfYear\"),require(\"date-fns/endOfDay\"),require(\"date-fns/endOfWeek\"),require(\"date-fns/endOfMonth\"),require(\"date-fns/endOfYear\"),require(\"date-fns/isEqual\"),require(\"date-fns/isSameDay\"),require(\"date-fns/isSameMonth\"),require(\"date-fns/isSameYear\"),require(\"date-fns/isSameQuarter\"),require(\"date-fns/isAfter\"),require(\"date-fns/isBefore\"),require(\"date-fns/isWithinInterval\"),require(\"date-fns/toDate\"),require(\"date-fns/parse\"),require(\"date-fns/parseISO\"),require(\"react-onclickoutside\"),require(\"react-dom\"),require(\"react-popper\"),require(\"date-fns/set\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"classnames\",\"date-fns/isDate\",\"date-fns/isValid\",\"date-fns/format\",\"date-fns/addMinutes\",\"date-fns/addHours\",\"date-fns/addDays\",\"date-fns/addWeeks\",\"date-fns/addMonths\",\"date-fns/addQuarters\",\"date-fns/addYears\",\"date-fns/subDays\",\"date-fns/subWeeks\",\"date-fns/subMonths\",\"date-fns/subQuarters\",\"date-fns/subYears\",\"date-fns/getSeconds\",\"date-fns/getMinutes\",\"date-fns/getHours\",\"date-fns/getDay\",\"date-fns/getDate\",\"date-fns/getISOWeek\",\"date-fns/getMonth\",\"date-fns/getQuarter\",\"date-fns/getYear\",\"date-fns/getTime\",\"date-fns/setSeconds\",\"date-fns/setMinutes\",\"date-fns/setHours\",\"date-fns/setMonth\",\"date-fns/setQuarter\",\"date-fns/setYear\",\"date-fns/min\",\"date-fns/max\",\"date-fns/differenceInCalendarDays\",\"date-fns/differenceInCalendarMonths\",\"date-fns/differenceInCalendarYears\",\"date-fns/startOfDay\",\"date-fns/startOfWeek\",\"date-fns/startOfMonth\",\"date-fns/startOfQuarter\",\"date-fns/startOfYear\",\"date-fns/endOfDay\",\"date-fns/endOfWeek\",\"date-fns/endOfMonth\",\"date-fns/endOfYear\",\"date-fns/isEqual\",\"date-fns/isSameDay\",\"date-fns/isSameMonth\",\"date-fns/isSameYear\",\"date-fns/isSameQuarter\",\"date-fns/isAfter\",\"date-fns/isBefore\",\"date-fns/isWithinInterval\",\"date-fns/toDate\",\"date-fns/parse\",\"date-fns/parseISO\",\"react-onclickoutside\",\"react-dom\",\"react-popper\",\"date-fns/set\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).DatePicker={},e.React,e.PropTypes,e.classNames,e.isDate,e.isValidDate,e.format,e.addMinutes,e.addHours,e.addDays,e.addWeeks,e.addMonths,e.addQuarters,e.addYears,e.subDays,e.subWeeks,e.subMonths,e.subQuarters,e.subYears,e.getSeconds,e.getMinutes,e.getHours,e.getDay,e.getDate,e.getISOWeek,e.getMonth,e.getQuarter,e.getYear,e.getTime,e.setSeconds,e.setMinutes,e.setHours,e.setMonth,e.setQuarter,e.setYear,e.min,e.max,e.differenceInCalendarDays,e.differenceInCalendarMonths,e.differenceInCalendarYears,e.startOfDay,e.startOfWeek,e.startOfMonth,e.startOfQuarter,e.startOfYear,e.endOfDay,null,e.endOfMonth,e.endOfYear,e.dfIsEqual,e.dfIsSameDay,e.dfIsSameMonth,e.dfIsSameYear,e.dfIsSameQuarter,e.isAfter,e.isBefore,e.isWithinInterval,e.toDate,e.parse,e.parseISO,e.onClickOutside,e.ReactDOM,e.ReactPopper,e.set)}(this,(function(e,t,r,a,n,o,s,i,p,l,c,d,u,f,h,m,y,v,D,g,w,k,b,S,C,_,M,E,P,N,Y,x,T,I,O,R,L,F,A,q,B,Q,K,W,H,j,V,U,z,$,G,J,X,Z,ee,te,re,ae,ne,oe,se,ie,pe,le){\"use strict\";function ce(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var de=ce(t),ue=ce(a),fe=ce(n),he=ce(o),me=ce(s),ye=ce(i),ve=ce(p),De=ce(l),ge=ce(c),we=ce(d),ke=ce(u),be=ce(f),Se=ce(h),Ce=ce(m),_e=ce(y),Me=ce(v),Ee=ce(D),Pe=ce(g),Ne=ce(w),Ye=ce(k),xe=ce(b),Te=ce(S),Ie=ce(C),Oe=ce(_),Re=ce(M),Le=ce(E),Fe=ce(P),Ae=ce(N),qe=ce(Y),Be=ce(x),Qe=ce(T),Ke=ce(I),We=ce(O),He=ce(R),je=ce(L),Ve=ce(F),Ue=ce(A),ze=ce(q),$e=ce(B),Ge=ce(Q),Je=ce(K),Xe=ce(W),Ze=ce(H),et=ce(j),tt=ce(U),rt=ce(z),at=ce($),nt=ce(G),ot=ce(J),st=ce(X),it=ce(Z),pt=ce(ee),lt=ce(te),ct=ce(re),dt=ce(ae),ut=ce(ne),ft=ce(oe),ht=ce(se),mt=ce(ie),yt=ce(le);function vt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function Dt(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,a=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.excludeDateIntervals,s=t.includeDates,i=t.includeDateIntervals,p=t.filterDate;return ur(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Jt(e,t)}))||o&&o.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})}))||s&&!s.some((function(t){return Jt(e,t)}))||i&&!i.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})}))||p&&!p(At(e))||!1}function or(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates,a=t.excludeDateIntervals;return a&&a.length>0?a.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})})):r&&r.some((function(t){return Jt(e,t)}))||!1}function sr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return ur(e,{minDate:Je.default(r),maxDate:tt.default(a)})||n&&n.some((function(t){return $t(e,t)}))||o&&!o.some((function(t){return $t(e,t)}))||s&&!s(At(e))||!1}function ir(e,t,r,a){var n=Le.default(e),o=Oe.default(e),s=Le.default(t),i=Oe.default(t),p=Le.default(a);return n===s&&n===p?o<=r&&r<=i:n=r||pn:void 0}function pr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return ur(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Gt(e,t)}))||o&&!o.some((function(t){return Gt(e,t)}))||s&&!s(At(e))||!1}function lr(e,t,r){if(!he.default(t)||!he.default(r))return!1;var a=Le.default(t),n=Le.default(r);return a<=e&&n>=e}function cr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate,i=new Date(e,0,1);return ur(i,{minDate:Ze.default(r),maxDate:rt.default(a)})||n&&n.some((function(e){return zt(i,e)}))||o&&!o.some((function(e){return zt(i,e)}))||s&&!s(At(i))||!1}function dr(e,t,r,a){var n=Le.default(e),o=Re.default(e),s=Le.default(t),i=Re.default(t),p=Le.default(a);return n===s&&n===p?o<=r&&r<=i:n=r||pn:void 0}function ur(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate;return r&&Ve.default(e,r)<0||a&&Ve.default(e,a)>0}function fr(e,t){return t.some((function(t){return Ye.default(t)===Ye.default(e)&&Ne.default(t)===Ne.default(e)}))}function hr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeTimes,a=t.includeTimes,n=t.filterTime;return r&&fr(e,r)||a&&!fr(e,a)||n&&!n(e)||!1}function mr(e,t){var r=t.minTime,a=t.maxTime;if(!r||!a)throw new Error(\"Both minTime and maxTime props required\");var n,o=At(),s=Be.default(qe.default(o,Ne.default(e)),Ye.default(e)),i=Be.default(qe.default(o,Ne.default(r)),Ye.default(r)),p=Be.default(qe.default(o,Ne.default(a)),Ye.default(a));try{n=!ct.default(s,{start:i,end:p})}catch(e){n=!1}return n}function yr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=_e.default(e,1);return r&&Ue.default(r,n)>0||a&&a.every((function(e){return Ue.default(e,n)>0}))||!1}function vr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=we.default(e,1);return r&&Ue.default(n,r)>0||a&&a.every((function(e){return Ue.default(n,e)>0}))||!1}function Dr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Ee.default(e,1);return r&&ze.default(r,n)>0||a&&a.every((function(e){return ze.default(e,n)>0}))||!1}function gr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=be.default(e,1);return r&&ze.default(n,r)>0||a&&a.every((function(e){return ze.default(n,e)>0}))||!1}function wr(e){var t=e.minDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return Ve.default(e,t)>=0}));return He.default(a)}return r?He.default(r):t}function kr(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return Ve.default(e,t)<=0}));return je.default(a)}return r?je.default(r):t}function br(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",r=new Map,a=0,n=e.length;a0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--holidays\",r=new Map;return e.forEach((function(e){var a=e.date,n=e.holidayName;if(fe.default(a)){var o=Bt(a,\"MM.dd.yyyy\"),s=r.get(o)||{};if(!(\"className\"in s)||s.className!==t||(i=s.holidayNames,p=[n],i.length!==p.length||!i.every((function(e,t){return e===p[t]})))){var i,p;s.className=t;var l=s.holidayNames;s.holidayNames=l?[].concat(Yt(l),[n]):[n],r.set(o,s)}}})),r}function Cr(e,t,r,a,n){for(var o=n.length,s=[],i=0;i1&&void 0!==arguments[1]?arguments[1]:Lt,r=Math.ceil(Le.default(e)/t)*t;return{startPeriod:r-(t-1),endPeriod:r}}function Er(e){var t=e.getSeconds(),r=e.getMilliseconds();return dt.default(e.getTime()-1e3*t-r)}function Pr(e,t,r,a){for(var n=[],o=0;o<2*t+1;o++){var s=e+t-o,i=!0;r&&(i=Le.default(r)<=s),a&&i&&(i=Le.default(a)>=s),i&&n.push(s)}return n}var Nr=function(e){_t(a,e);var r=Nt(a);function a(e){var n;wt(this,a),St(Pt(n=r.call(this,e)),\"renderOptions\",(function(){var e=n.props.year,t=n.state.yearsList.map((function(t){return de.default.createElement(\"div\",{className:e===t?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:t,onClick:n.onChange.bind(Pt(n),t),\"aria-selected\":e===t?\"true\":void 0},e===t?de.default.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"✓\"):\"\",t)})),r=n.props.minDate?Le.default(n.props.minDate):null,a=n.props.maxDate?Le.default(n.props.maxDate):null;return a&&n.state.yearsList.find((function(e){return e===a}))||t.unshift(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:n.incrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),r&&n.state.yearsList.find((function(e){return e===r}))||t.push(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:n.decrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),t})),St(Pt(n),\"onChange\",(function(e){n.props.onChange(e)})),St(Pt(n),\"handleClickOutside\",(function(){n.props.onCancel()})),St(Pt(n),\"shiftYears\",(function(e){var t=n.state.yearsList.map((function(t){return t+e}));n.setState({yearsList:t})})),St(Pt(n),\"incrementYears\",(function(){return n.shiftYears(1)})),St(Pt(n),\"decrementYears\",(function(){return n.shiftYears(-1)}));var o=e.yearDropdownItemNumber,s=e.scrollableYearDropdown,i=o||(s?10:5);return n.state={yearsList:Pr(n.props.year,i,n.props.minDate,n.props.maxDate)},n.dropdownRef=t.createRef(),n}return bt(a,[{key:\"componentDidMount\",value:function(){var e=this.dropdownRef.current;if(e){var t=e.children?Array.from(e.children):null,r=t?t.find((function(e){return e.ariaSelected})):null;e.scrollTop=r?r.offsetTop+(r.clientHeight-e.clientHeight)/2:(e.scrollHeight-e.clientHeight)/2}}},{key:\"render\",value:function(){var e=ue.default({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return de.default.createElement(\"div\",{className:e,ref:this.dropdownRef},this.renderOptions())}}]),a}(de.default.Component),Yr=ht.default(Nr),xr=function(e){_t(r,e);var t=Nt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o0?n.get(o).holidayNames.join(\", \"):\"\"})),St(Pt(e),\"getTabIndex\",(function(t,r){var a=t||e.props.selected,n=r||e.props.preSelection;return e.isKeyboardSelected()||e.isSameDay(a)&&Jt(n,a)?0:-1})),St(Pt(e),\"handleFocusDay\",(function(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=!1;0===e.getTabIndex()&&!r.isInputFocused&&e.isSameDay(e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(a=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(a=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(a=!0),e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()&&(a=!1),e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()&&(a=!1)),a&&(null===(t=e.dayEl.current)||void 0===t||t.focus({preventScroll:!0}))})),St(Pt(e),\"renderDayContents\",(function(){return e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()||e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()?null:e.props.renderDayContents?e.props.renderDayContents(Te.default(e.props.day),e.props.day):Te.default(e.props.day)})),St(Pt(e),\"render\",(function(){return de.default.createElement(\"div\",{ref:e.dayEl,className:e.getClassNames(e.props.day),onKeyDown:e.handleOnKeyDown,onClick:e.handleClick,onMouseEnter:e.handleMouseEnter,tabIndex:e.getTabIndex(),\"aria-label\":e.getAriaLabel(),role:\"option\",title:e.getTitle(),\"aria-disabled\":e.isDisabled(),\"aria-current\":e.isCurrentDay()?\"date\":void 0,\"aria-selected\":e.isSelected()||e.isInRange()},e.renderDayContents(),\"\"!==e.getTitle()&&de.default.createElement(\"span\",{className:\"holiday-overlay\"},e.getTitle()))})),e}return bt(r,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),r}(de.default.Component),Qr=function(e){_t(r,e);var t=Nt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o=6,i=!r&&!e.isWeekInMonth(o);if(s||i){if(!e.props.peekNextMonth)break;n=!0}}return t})),St(Pt(e),\"onMonthClick\",(function(t,r){e.handleDayClick(Ht(Qe.default(e.props.day,r)),t)})),St(Pt(e),\"onMonthMouseEnter\",(function(t){e.handleDayMouseEnter(Ht(Qe.default(e.props.day,t)))})),St(Pt(e),\"handleMonthNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.MONTH_REFS[t].current&&e.MONTH_REFS[t].current.focus())})),St(Pt(e),\"onMonthKeyDown\",(function(t,r){var a=e.props,n=a.selected,o=a.preSelection,s=a.disabledKeyboardNavigation,i=a.showTwoColumnMonthYearPicker,p=a.showFourColumnMonthYearPicker,l=a.setPreSelection,c=t.key;if(\"Tab\"!==c&&t.preventDefault(),!s){var d=Ur(p,i),u=Vr[d].verticalNavigationOffset,f=Vr[d].grid;switch(c){case\"Enter\":e.onMonthClick(t,r),l(n);break;case\"ArrowRight\":e.handleMonthNavigation(11===r?0:r+1,we.default(o,1));break;case\"ArrowLeft\":e.handleMonthNavigation(0===r?11:r-1,_e.default(o,1));break;case\"ArrowUp\":e.handleMonthNavigation(f[0].includes(r)?r+12-u:r-u,_e.default(o,u));break;case\"ArrowDown\":e.handleMonthNavigation(f[f.length-1].includes(r)?r-12+u:r+u,we.default(o,u))}}})),St(Pt(e),\"onQuarterClick\",(function(t,r){e.handleDayClick(Vt(Ke.default(e.props.day,r)),t)})),St(Pt(e),\"onQuarterMouseEnter\",(function(t){e.handleDayMouseEnter(Vt(Ke.default(e.props.day,t)))})),St(Pt(e),\"handleQuarterNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.QUARTER_REFS[t-1].current&&e.QUARTER_REFS[t-1].current.focus())})),St(Pt(e),\"onQuarterKeyDown\",(function(t,r){var a=t.key;if(!e.props.disabledKeyboardNavigation)switch(a){case\"Enter\":e.onQuarterClick(t,r),e.props.setPreSelection(e.props.selected);break;case\"ArrowRight\":e.handleQuarterNavigation(4===r?1:r+1,ke.default(e.props.preSelection,1));break;case\"ArrowLeft\":e.handleQuarterNavigation(1===r?4:r-1,Me.default(e.props.preSelection,1))}})),St(Pt(e),\"getMonthClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,c=r.monthClassName,d=r.excludeDates,u=r.includeDates,f=c?c(Qe.default(a,t)):void 0,h=Qe.default(a,t);return ue.default(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(t),f,{\"react-datepicker__month-text--disabled\":(i||p||d||u)&&sr(h,e.props),\"react-datepicker__month-text--selected\":e.isSelectedMonth(a,t,s),\"react-datepicker__month-text--keyboard-selected\":!e.props.disabledKeyboardNavigation&&Oe.default(l)===t,\"react-datepicker__month-text--in-selecting-range\":e.isInSelectingRangeMonth(t),\"react-datepicker__month-text--in-range\":ir(n,o,t,a),\"react-datepicker__month-text--range-start\":e.isRangeStartMonth(t),\"react-datepicker__month-text--range-end\":e.isRangeEndMonth(t),\"react-datepicker__month-text--selecting-range-start\":e.isSelectingMonthRangeStart(t),\"react-datepicker__month-text--selecting-range-end\":e.isSelectingMonthRangeEnd(t),\"react-datepicker__month-text--today\":e.isCurrentMonth(a,t)})})),St(Pt(e),\"getTabIndex\",(function(t){var r=Oe.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),St(Pt(e),\"getQuarterTabIndex\",(function(t){var r=Re.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),St(Pt(e),\"getAriaLabel\",(function(t){var r=e.props,a=r.chooseDayAriaLabelPrefix,n=void 0===a?\"Choose\":a,o=r.disabledDayAriaLabelPrefix,s=void 0===o?\"Not available\":o,i=r.day,p=Qe.default(i,t),l=e.isDisabled(p)||e.isExcluded(p)?s:n;return\"\".concat(l,\" \").concat(Bt(p,\"MMMM yyyy\"))})),St(Pt(e),\"getQuarterClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection;return ue.default(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(t),{\"react-datepicker__quarter-text--disabled\":(i||p)&&pr(Ke.default(a,t),e.props),\"react-datepicker__quarter-text--selected\":e.isSelectedQuarter(a,t,s),\"react-datepicker__quarter-text--keyboard-selected\":Re.default(l)===t,\"react-datepicker__quarter-text--in-selecting-range\":e.isInSelectingRangeQuarter(t),\"react-datepicker__quarter-text--in-range\":dr(n,o,t,a),\"react-datepicker__quarter-text--range-start\":e.isRangeStartQuarter(t),\"react-datepicker__quarter-text--range-end\":e.isRangeEndQuarter(t)})})),St(Pt(e),\"getMonthContent\",(function(t){var r=e.props,a=r.showFullMonthYearPicker,n=r.renderMonthContent,o=r.locale,s=ar(t,o),i=rr(t,o);return n?n(t,s,i):a?i:s})),St(Pt(e),\"getQuarterContent\",(function(t){var r=e.props,a=r.renderQuarterContent,n=function(e,t){return Bt(Ke.default(At(),e),\"QQQ\",t)}(t,r.locale);return a?a(t,n):n})),St(Pt(e),\"renderMonths\",(function(){var t=e.props,r=t.showTwoColumnMonthYearPicker,a=t.showFourColumnMonthYearPicker,n=t.day,o=t.selected;return Vr[Ur(a,r)].grid.map((function(t,r){return de.default.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:r},t.map((function(t,r){return de.default.createElement(\"div\",{ref:e.MONTH_REFS[t],key:r,onClick:function(r){e.onMonthClick(r,t)},onKeyDown:function(r){e.onMonthKeyDown(r,t)},onMouseEnter:function(){return e.onMonthMouseEnter(t)},tabIndex:e.getTabIndex(t),className:e.getMonthClassNames(t),role:\"option\",\"aria-label\":e.getAriaLabel(t),\"aria-current\":e.isCurrentMonth(n,t)?\"date\":void 0,\"aria-selected\":e.isSelectedMonth(n,t,o)},e.getMonthContent(t))})))}))})),St(Pt(e),\"renderQuarters\",(function(){var t=e.props,r=t.day,a=t.selected;return de.default.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,n){return de.default.createElement(\"div\",{key:n,ref:e.QUARTER_REFS[n],role:\"option\",onClick:function(r){e.onQuarterClick(r,t)},onKeyDown:function(r){e.onQuarterKeyDown(r,t)},onMouseEnter:function(){return e.onQuarterMouseEnter(t)},className:e.getQuarterClassNames(t),\"aria-selected\":e.isSelectedQuarter(r,t,a),tabIndex:e.getQuarterTabIndex(t),\"aria-current\":e.isCurrentQuarter(r,t)?\"date\":void 0},e.getQuarterContent(t))})))})),St(Pt(e),\"getClassNames\",(function(){var t=e.props,r=t.selectingDate,a=t.selectsStart,n=t.selectsEnd,o=t.showMonthYearPicker,s=t.showQuarterYearPicker;return ue.default(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":r&&(a||n)},{\"react-datepicker__monthPicker\":o},{\"react-datepicker__quarterPicker\":s})})),e}return bt(r,[{key:\"render\",value:function(){var e=this.props,t=e.showMonthYearPicker,r=e.showQuarterYearPicker,a=e.day,n=e.ariaLabelPrefix,o=void 0===n?\"month \":n;return de.default.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(o,\" \").concat(Bt(a,\"yyyy-MM\")),role:\"listbox\"},t?this.renderMonths():r?this.renderQuarters():this.renderWeeks())}}]),r}(de.default.Component),$r=function(e){_t(r,e);var t=Nt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o0&&void 0!==arguments[0]?arguments[0]:{}).className||\"\").split(/\\s+/);return Zr.some((function(t){return e.indexOf(t)>=0}))})(e.target)&&a.props.onDropdownFocus()})),St(Pt(a),\"getDateInView\",(function(){var e=a.props,t=e.preSelection,r=e.selected,n=e.openToDate,o=wr(a.props),s=kr(a.props),i=At(),p=n||r||t;return p||(o&<.default(i,o)?o:s&&pt.default(i,s)?s:i)})),St(Pt(a),\"increaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:we.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Pt(a),\"decreaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:_e.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Pt(a),\"handleDayClick\",(function(e,t,r){a.props.onSelect(e,t,r),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Pt(a),\"handleDayMouseEnter\",(function(e){a.setState({selectingDate:e}),a.props.onDayMouseEnter&&a.props.onDayMouseEnter(e)})),St(Pt(a),\"handleMonthMouseLeave\",(function(){a.setState({selectingDate:null}),a.props.onMonthMouseLeave&&a.props.onMonthMouseLeave()})),St(Pt(a),\"handleYearMouseEnter\",(function(e,t){a.setState({selectingDate:We.default(At(),t)}),a.props.onYearMouseEnter&&a.props.onYearMouseEnter(e,t)})),St(Pt(a),\"handleYearMouseLeave\",(function(e,t){a.props.onYearMouseLeave&&a.props.onYearMouseLeave(e,t)})),St(Pt(a),\"handleYearChange\",(function(e){a.props.onYearChange&&(a.props.onYearChange(e),a.setState({isRenderAriaLiveMessage:!0})),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Pt(a),\"handleMonthChange\",(function(e){a.handleCustomMonthChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Pt(a),\"handleCustomMonthChange\",(function(e){a.props.onMonthChange&&(a.props.onMonthChange(e),a.setState({isRenderAriaLiveMessage:!0}))})),St(Pt(a),\"handleMonthYearChange\",(function(e){a.handleYearChange(e),a.handleMonthChange(e)})),St(Pt(a),\"changeYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(r,e)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Pt(a),\"changeMonth\",(function(e){a.setState((function(t){var r=t.date;return{date:Qe.default(r,e)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Pt(a),\"changeMonthYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(Qe.default(r,Oe.default(e)),Le.default(e))}}),(function(){return a.handleMonthYearChange(a.state.date)}))})),St(Pt(a),\"header\",(function(){var e=Wt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,a.props.locale,a.props.calendarStartDay),t=[];return a.props.showWeekNumbers&&t.push(de.default.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},a.props.weekLabel||\"#\")),t.concat([0,1,2,3,4,5,6].map((function(t){var r=De.default(e,t),n=a.formatWeekday(r,a.props.locale),o=a.props.weekDayClassName?a.props.weekDayClassName(r):void 0;return de.default.createElement(\"div\",{key:t,className:ue.default(\"react-datepicker__day-name\",o)},n)})))})),St(Pt(a),\"formatWeekday\",(function(e,t){return a.props.formatWeekDay?function(e,t,r){return t(Bt(e,\"EEEE\",r))}(e,a.props.formatWeekDay,t):a.props.useWeekdaysShort?function(e,t){return Bt(e,\"EEE\",t)}(e,t):function(e,t){return Bt(e,\"EEEEEE\",t)}(e,t)})),St(Pt(a),\"decreaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:Ee.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Pt(a),\"clearSelectingDate\",(function(){a.setState({selectingDate:null})})),St(Pt(a),\"renderPreviousButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=Dr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.yearItemNumber,n=void 0===a?Lt:a,o=Mr(jt(Ee.default(e,n)),n).endPeriod,s=r&&Le.default(r);return s&&s>o||!1}(a.state.date,a.props);break;default:e=yr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],r=a.decreaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.decreaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--previous--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.previousMonthButtonLabel,i=o.previousYearButtonLabel,p=a.props,l=p.previousMonthAriaLabel,c=void 0===l?\"string\"==typeof s?s:\"Previous Month\":l,d=p.previousYearAriaLabel,u=void 0===d?\"string\"==typeof i?i:\"Previous Year\":d;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,onKeyDown:a.props.handleOnKeyDown,\"aria-label\":n?u:c},de.default.createElement(\"span\",{className:[\"react-datepicker__navigation-icon\",\"react-datepicker__navigation-icon--previous\"].join(\" \")},n?a.props.previousYearButtonLabel:a.props.previousMonthButtonLabel))}}})),St(Pt(a),\"increaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:be.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Pt(a),\"renderNextButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=gr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.yearItemNumber,n=void 0===a?Lt:a,o=Mr(be.default(e,n),n).startPeriod,s=r&&Le.default(r);return s&&s0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=[\"react-datepicker__current-month\"];return a.props.showYearDropdown&&t.push(\"react-datepicker__current-month--hasYearDropdown\"),a.props.showMonthDropdown&&t.push(\"react-datepicker__current-month--hasMonthDropdown\"),a.props.showMonthYearDropdown&&t.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),de.default.createElement(\"div\",{className:t.join(\" \")},Bt(e,a.props.dateFormat,a.props.locale))})),St(Pt(a),\"renderYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showYearDropdown&&!e)return de.default.createElement(xr,{adjustDateOnChange:a.props.adjustDateOnChange,date:a.state.date,onSelect:a.props.onSelect,setOpen:a.props.setOpen,dropdownMode:a.props.dropdownMode,onChange:a.changeYear,minDate:a.props.minDate,maxDate:a.props.maxDate,year:Le.default(a.state.date),scrollableYearDropdown:a.props.scrollableYearDropdown,yearDropdownItemNumber:a.props.yearDropdownItemNumber})})),St(Pt(a),\"renderMonthDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthDropdown&&!e)return de.default.createElement(Or,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,onChange:a.changeMonth,month:Oe.default(a.state.date),useShortMonthInDropdown:a.props.useShortMonthInDropdown})})),St(Pt(a),\"renderMonthYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthYearDropdown&&!e)return de.default.createElement(qr,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,dateFormat:a.props.dateFormat,onChange:a.changeMonthYear,minDate:a.props.minDate,maxDate:a.props.maxDate,date:a.state.date,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown})})),St(Pt(a),\"handleTodayButtonClick\",(function(e){a.props.onSelect(Ut(),e),a.props.setPreSelection&&a.props.setPreSelection(Ut())})),St(Pt(a),\"renderTodayButton\",(function(){if(a.props.todayButton&&!a.props.showTimeSelectOnly)return de.default.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return a.handleTodayButtonClick(e)}},a.props.todayButton)})),St(Pt(a),\"renderDefaultHeader\",(function(e){var t=e.monthDate,r=e.i;return de.default.createElement(\"div\",{className:\"react-datepicker__header \".concat(a.props.showTimeSelect?\"react-datepicker__header--has-time-select\":\"\")},a.renderCurrentMonth(t),de.default.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(a.props.dropdownMode),onFocus:a.handleDropdownFocus},a.renderMonthDropdown(0!==r),a.renderMonthYearDropdown(0!==r),a.renderYearDropdown(0!==r)),de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),St(Pt(a),\"renderCustomHeader\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.monthDate,r=e.i;if(a.props.showTimeSelect&&!a.state.monthContainer||a.props.showTimeSelectOnly)return null;var n=yr(a.state.date,a.props),o=vr(a.state.date,a.props),s=Dr(a.state.date,a.props),i=gr(a.state.date,a.props),p=!a.props.showMonthYearPicker&&!a.props.showQuarterYearPicker&&!a.props.showYearPicker;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:a.props.onDropdownFocus},a.props.renderCustomHeader(Dt(Dt({},a.state),{},{customHeaderCount:r,monthDate:t,changeMonth:a.changeMonth,changeYear:a.changeYear,decreaseMonth:a.decreaseMonth,increaseMonth:a.increaseMonth,decreaseYear:a.decreaseYear,increaseYear:a.increaseYear,prevMonthButtonDisabled:n,nextMonthButtonDisabled:o,prevYearButtonDisabled:s,nextYearButtonDisabled:i})),p&&de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),St(Pt(a),\"renderYearHeader\",(function(){var e=a.state.date,t=a.props,r=t.showYearPicker,n=Mr(e,t.yearItemNumber),o=n.startPeriod,s=n.endPeriod;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},r?\"\".concat(o,\" - \").concat(s):Le.default(e))})),St(Pt(a),\"renderHeader\",(function(e){switch(!0){case void 0!==a.props.renderCustomHeader:return a.renderCustomHeader(e);case a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker:return a.renderYearHeader(e);default:return a.renderDefaultHeader(e)}})),St(Pt(a),\"renderMonths\",(function(){var e;if(!a.props.showTimeSelectOnly&&!a.props.showYearPicker){for(var t=[],r=a.props.showPreviousMonths?a.props.monthsShown-1:0,n=_e.default(a.state.date,r),o=null!==(e=a.props.monthSelectedIn)&&void 0!==e?e:r,s=0;s0;t.push(de.default.createElement(\"div\",{key:l,ref:function(e){a.monthContainer=e},className:\"react-datepicker__month-container\"},a.renderHeader({monthDate:p,i:s}),de.default.createElement(zr,{chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,ariaLabelPrefix:a.props.monthAriaLabelPrefix,onChange:a.changeMonthYear,day:p,dayClassName:a.props.dayClassName,calendarStartDay:a.props.calendarStartDay,monthClassName:a.props.monthClassName,onDayClick:a.handleDayClick,handleOnKeyDown:a.props.handleOnDayKeyDown,onDayMouseEnter:a.handleDayMouseEnter,onMouseLeave:a.handleMonthMouseLeave,onWeekSelect:a.props.onWeekSelect,orderInDisplay:s,formatWeekNumber:a.props.formatWeekNumber,locale:a.props.locale,minDate:a.props.minDate,maxDate:a.props.maxDate,excludeDates:a.props.excludeDates,excludeDateIntervals:a.props.excludeDateIntervals,highlightDates:a.props.highlightDates,holidays:a.props.holidays,selectingDate:a.state.selectingDate,includeDates:a.props.includeDates,includeDateIntervals:a.props.includeDateIntervals,inline:a.props.inline,shouldFocusDayInline:a.props.shouldFocusDayInline,fixedHeight:a.props.fixedHeight,filterDate:a.props.filterDate,preSelection:a.props.preSelection,setPreSelection:a.props.setPreSelection,selected:a.props.selected,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,selectsDisabledDaysInRange:a.props.selectsDisabledDaysInRange,showWeekNumbers:a.props.showWeekNumbers,startDate:a.props.startDate,endDate:a.props.endDate,peekNextMonth:a.props.peekNextMonth,setOpen:a.props.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,renderDayContents:a.props.renderDayContents,renderMonthContent:a.props.renderMonthContent,renderQuarterContent:a.props.renderQuarterContent,renderYearContent:a.props.renderYearContent,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,isInputFocused:a.props.isInputFocused,containerRef:a.containerRef,monthShowsDuplicateDaysEnd:c,monthShowsDuplicateDaysStart:d})))}return t}})),St(Pt(a),\"renderYears\",(function(){if(!a.props.showTimeSelectOnly)return a.props.showYearPicker?de.default.createElement(\"div\",{className:\"react-datepicker__year--container\"},a.renderHeader(),de.default.createElement(Gr,Ct({onDayClick:a.handleDayClick,selectingDate:a.state.selectingDate,clearSelectingDate:a.clearSelectingDate,date:a.state.date},a.props,{onYearMouseEnter:a.handleYearMouseEnter,onYearMouseLeave:a.handleYearMouseLeave}))):void 0})),St(Pt(a),\"renderTimeSection\",(function(){if(a.props.showTimeSelect&&(a.state.monthContainer||a.props.showTimeSelectOnly))return de.default.createElement($r,{selected:a.props.selected,openToDate:a.props.openToDate,onChange:a.props.onTimeChange,timeClassName:a.props.timeClassName,format:a.props.timeFormat,includeTimes:a.props.includeTimes,intervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,todayButton:a.props.todayButton,showMonthDropdown:a.props.showMonthDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,monthRef:a.state.monthContainer,injectTimes:a.props.injectTimes,locale:a.props.locale,handleOnKeyDown:a.props.handleOnKeyDown,showTimeSelectOnly:a.props.showTimeSelectOnly})})),St(Pt(a),\"renderInputTimeSection\",(function(){var e=new Date(a.props.selected),t=qt(e)&&Boolean(a.props.selected)?\"\".concat(_r(e.getHours()),\":\").concat(_r(e.getMinutes())):\"\";if(a.props.showTimeInput)return de.default.createElement(Jr,{date:e,timeString:t,timeInputLabel:a.props.timeInputLabel,onChange:a.props.onTimeChange,customTimeInput:a.props.customTimeInput})})),St(Pt(a),\"renderAriaLiveRegion\",(function(){var e,t=Mr(a.state.date,a.props.yearItemNumber),r=t.startPeriod,n=t.endPeriod;return e=a.props.showYearPicker?\"\".concat(r,\" - \").concat(n):a.props.showMonthYearPicker||a.props.showQuarterYearPicker?Le.default(a.state.date):\"\".concat(rr(Oe.default(a.state.date),a.props.locale),\" \").concat(Le.default(a.state.date)),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},a.state.isRenderAriaLiveMessage&&e)})),St(Pt(a),\"renderChildren\",(function(){if(a.props.children)return de.default.createElement(\"div\",{className:\"react-datepicker__children-container\"},a.props.children)})),a.containerRef=de.default.createRef(),a.state={date:a.getDateInView(),selectingDate:null,monthContainer:null,isRenderAriaLiveMessage:!1},a}return bt(r,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){var t=this;if(!this.props.preSelection||Jt(this.props.preSelection,e.preSelection)&&this.props.monthSelectedIn===e.monthSelectedIn)this.props.openToDate&&!Jt(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate});else{var r=!$t(this.state.date,this.props.preSelection);this.setState({date:this.props.preSelection},(function(){return r&&t.handleCustomMonthChange(t.state.date)}))}}},{key:\"render\",value:function(){var e=this.props.container||Xr;return de.default.createElement(\"div\",{ref:this.containerRef},de.default.createElement(e,{className:ue.default(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly}),showPopperArrow:this.props.showPopperArrow,arrowProps:this.props.arrowProps},this.renderAriaLiveRegion(),this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.renderChildren()))}}],[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null,yearItemNumber:Lt}}}]),r}(de.default.Component),ta=function(e){var t=e.icon,r=e.className,a=void 0===r?\"\":r,n=\"react-datepicker__calendar-icon\";return de.default.isValidElement(t)?de.default.cloneElement(t,{className:\"\".concat(t.props.className||\"\",\" \").concat(n,\" \").concat(a)}):\"string\"==typeof t?de.default.createElement(\"i\",{className:\"\".concat(n,\" \").concat(t,\" \").concat(a),\"aria-hidden\":\"true\"}):de.default.createElement(\"svg\",{className:\"\".concat(n,\" \").concat(a),xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 448 512\"},de.default.createElement(\"path\",{d:\"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"}))},ra=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return wt(this,r),(a=t.call(this,e)).el=document.createElement(\"div\"),a}return bt(r,[{key:\"componentDidMount\",value:function(){this.portalRoot=(this.props.portalHost||document).getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),(this.props.portalHost||document.body).appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return mt.default.createPortal(this.props.children,this.el)}}]),r}(de.default.Component),aa=function(e){return!e.disabled&&-1!==e.tabIndex},na=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return wt(this,r),St(Pt(a=t.call(this,e)),\"getTabChildren\",(function(){return Array.prototype.slice.call(a.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(aa)})),St(Pt(a),\"handleFocusStart\",(function(){var e=a.getTabChildren();e&&e.length>1&&e[e.length-1].focus()})),St(Pt(a),\"handleFocusEnd\",(function(){var e=a.getTabChildren();e&&e.length>1&&e[0].focus()})),a.tabLoopRef=de.default.createRef(),a}return bt(r,[{key:\"render\",value:function(){return this.props.enableTabLoop?de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}],[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),r}(de.default.Component),oa=function(e){_t(r,e);var t=Nt(r);function r(){return wt(this,r),t.apply(this,arguments)}return bt(r,[{key:\"render\",value:function(){var e,t=this.props,r=t.className,a=t.wrapperClassName,n=t.hidePopper,o=t.popperComponent,s=t.popperModifiers,i=t.popperPlacement,p=t.popperProps,l=t.targetComponent,c=t.enableTabLoop,d=t.popperOnKeyDown,u=t.portalId,f=t.portalHost;if(!n){var h=ue.default(\"react-datepicker-popper\",r);e=de.default.createElement(pe.Popper,Ct({modifiers:s,placement:i},p),(function(e){var t=e.ref,r=e.style,a=e.placement,n=e.arrowProps;return de.default.createElement(na,{enableTabLoop:c},de.default.createElement(\"div\",{ref:t,style:r,className:h,\"data-placement\":a,onKeyDown:d},de.default.cloneElement(o,{arrowProps:n})))}))}this.props.popperContainer&&(e=de.default.createElement(this.props.popperContainer,{},e)),u&&!n&&(e=de.default.createElement(ra,{portalId:u,portalHost:f},e));var m=ue.default(\"react-datepicker-wrapper\",a);return de.default.createElement(pe.Manager,{className:\"react-datepicker-manager\"},de.default.createElement(pe.Reference,null,(function(e){var t=e.ref;return de.default.createElement(\"div\",{ref:t,className:m},l)})),e)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0,popperModifiers:[],popperProps:{},popperPlacement:\"bottom-start\"}}}]),r}(de.default.Component),sa=\"react-datepicker-ignore-onclickoutside\",ia=ht.default(ea);var pa=\"Date input not valid.\",la=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return wt(this,r),St(Pt(a=t.call(this,e)),\"getPreSelection\",(function(){return a.props.openToDate?a.props.openToDate:a.props.selectsEnd&&a.props.startDate?a.props.startDate:a.props.selectsStart&&a.props.endDate?a.props.endDate:At()})),St(Pt(a),\"calcInitialState\",(function(){var e,t,r=null===(e=a.props.holidays)||void 0===e?void 0:e.reduce((function(e,t){var r=new Date(t.date);return he.default(r)?[].concat(Yt(e),[Dt(Dt({},t),{},{date:r})]):e}),[]),n=a.getPreSelection(),o=wr(a.props),s=kr(a.props),i=o&<.default(n,$e.default(o))?o:s&&pt.default(n,et.default(s))?s:n;return{open:a.props.startOpen||!1,preventFocus:!1,preSelection:null!==(t=a.props.selectsRange?a.props.startDate:a.props.selected)&&void 0!==t?t:i,highlightDates:br(a.props.highlightDates),holidays:Sr(r),focused:!1,shouldFocusDayInline:!1,isRenderAriaLiveMessage:!1}})),St(Pt(a),\"clearPreventFocusTimeout\",(function(){a.preventFocusTimeout&&clearTimeout(a.preventFocusTimeout)})),St(Pt(a),\"setFocus\",(function(){a.input&&a.input.focus&&a.input.focus({preventScroll:!0})})),St(Pt(a),\"setBlur\",(function(){a.input&&a.input.blur&&a.input.blur(),a.cancelFocusInput()})),St(Pt(a),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.setState({open:e,preSelection:e&&a.state.open?a.state.preSelection:a.calcInitialState().preSelection,lastPreSelectChange:da},(function(){e||a.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&a.setBlur(),a.setState({inputValue:null})}))}))})),St(Pt(a),\"inputOk\",(function(){return fe.default(a.state.preSelection)})),St(Pt(a),\"isCalendarOpen\",(function(){return void 0===a.props.open?a.state.open&&!a.props.disabled&&!a.props.readOnly:a.props.open})),St(Pt(a),\"handleFocus\",(function(e){a.state.preventFocus||(a.props.onFocus(e),a.props.preventOpenOnFocus||a.props.readOnly||a.setOpen(!0)),a.setState({focused:!0})})),St(Pt(a),\"sendFocusBackToInput\",(function(){a.preventFocusTimeout&&a.clearPreventFocusTimeout(),a.setState({preventFocus:!0},(function(){a.preventFocusTimeout=setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))}))})),St(Pt(a),\"cancelFocusInput\",(function(){clearTimeout(a.inputFocusTimeout),a.inputFocusTimeout=null})),St(Pt(a),\"deferFocusInput\",(function(){a.cancelFocusInput(),a.inputFocusTimeout=setTimeout((function(){return a.setFocus()}),1)})),St(Pt(a),\"handleDropdownFocus\",(function(){a.cancelFocusInput()})),St(Pt(a),\"handleBlur\",(function(e){(!a.state.open||a.props.withPortal||a.props.showTimeInput)&&a.props.onBlur(e),a.setState({focused:!1})})),St(Pt(a),\"handleCalendarClickOutside\",(function(e){a.props.inline||a.setOpen(!1),a.props.onClickOutside(e),a.props.withPortal&&e.preventDefault()})),St(Pt(a),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&(c=ut.default(o,s.slice(0,o.length),new Date)),qt(c)||(c=new Date(o))),qt(c)&&u?c:null));a.props.showTimeSelectOnly&&a.props.selected&&!Jt(f,a.props.selected)&&(f=null==f?yt.default(a.props.selected,{hours:Ye.default(a.props.selected),minutes:Ne.default(a.props.selected),seconds:Pe.default(a.props.selected)}):yt.default(a.props.selected,{hours:Ye.default(f),minutes:Ne.default(f),seconds:Pe.default(f)})),!f&&n.target.value||a.setSelected(f,n,!0)}})),St(Pt(a),\"handleSelect\",(function(e,t,r){if(a.props.shouldCloseOnSelect&&!a.props.showTimeSelect&&a.sendFocusBackToInput(),a.props.onChangeRaw&&a.props.onChangeRaw(t),a.setSelected(e,t,!1,r),a.props.showDateSelect&&a.setState({isRenderAriaLiveMessage:!0}),!a.props.shouldCloseOnSelect||a.props.showTimeSelect)a.setPreSelection(e);else if(!a.props.inline){a.props.selectsRange||a.setOpen(!1);var n=a.props,o=n.startDate,s=n.endDate;!o||s||lt.default(e,o)||a.setOpen(!1)}})),St(Pt(a),\"setSelected\",(function(e,t,r,n){var o=e;if(a.props.showYearPicker){if(null!==o&&cr(Le.default(o),a.props))return}else if(a.props.showMonthYearPicker){if(null!==o&&sr(o,a.props))return}else if(null!==o&&nr(o,a.props))return;var s=a.props,i=s.onChange,p=s.selectsRange,l=s.startDate,c=s.endDate;if(!Xt(a.props.selected,o)||a.props.allowSameDay||p)if(null!==o&&(!a.props.selected||r&&(a.props.showTimeSelect||a.props.showTimeSelectOnly||a.props.showTimeInput)||(o=Kt(o,{hour:Ye.default(a.props.selected),minute:Ne.default(a.props.selected),second:Pe.default(a.props.selected)})),a.props.inline||a.setState({preSelection:o}),a.props.focusSelectedMonth||a.setState({monthSelectedIn:n})),p){var d=l&&!c,u=l&&c;!l&&!c?i([o,null],t):d&&(lt.default(o,l)?i([o,null],t):i([l,o],t)),u&&i([o,null],t)}else i(o,t);r||(a.props.onSelect(o,t),a.setState({inputValue:null}))})),St(Pt(a),\"setPreSelection\",(function(e){var t=void 0!==a.props.minDate,r=void 0!==a.props.maxDate,n=!0;if(e){var o=$e.default(e);if(t&&r)n=Zt(e,a.props.minDate,a.props.maxDate);else if(t){var s=$e.default(a.props.minDate);n=pt.default(e,s)||Xt(o,s)}else if(r){var i=et.default(a.props.maxDate);n=lt.default(e,i)||Xt(o,i)}}n&&a.setState({preSelection:e})})),St(Pt(a),\"handleTimeChange\",(function(e){var t=a.props.selected?a.props.selected:a.getPreSelection(),r=a.props.selected?e:Kt(t,{hour:Ye.default(e),minute:Ne.default(e)});a.setState({preSelection:r}),a.props.onChange(r),a.props.shouldCloseOnSelect&&(a.sendFocusBackToInput(),a.setOpen(!1)),a.props.showTimeInput&&a.setOpen(!0),(a.props.showTimeSelectOnly||a.props.showTimeSelect)&&a.setState({isRenderAriaLiveMessage:!0}),a.setState({inputValue:null})})),St(Pt(a),\"onInputClick\",(function(){a.props.disabled||a.props.readOnly||a.setOpen(!0),a.props.onInputClick()})),St(Pt(a),\"onInputKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key;if(a.state.open||a.props.inline||a.props.preventOpenOnFocus){if(a.state.open){if(\"ArrowDown\"===t||\"ArrowUp\"===t){e.preventDefault();var r=a.calendar.componentNode&&a.calendar.componentNode.querySelector('.react-datepicker__day[tabindex=\"0\"]');return void(r&&r.focus({preventScroll:!0}))}var n=At(a.state.preSelection);\"Enter\"===t?(e.preventDefault(),a.inputOk()&&a.state.lastPreSelectChange===da?(a.handleSelect(n,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(n)):a.setOpen(!1)):\"Escape\"===t?(e.preventDefault(),a.sendFocusBackToInput(),a.setOpen(!1)):\"Tab\"===t&&a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:pa})}}else\"ArrowDown\"!==t&&\"ArrowUp\"!==t&&\"Enter\"!==t||a.onInputClick()})),St(Pt(a),\"onPortalKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.setState({preventFocus:!0},(function(){a.setOpen(!1),setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))})))})),St(Pt(a),\"onDayKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key,r=At(a.state.preSelection);if(\"Enter\"===t)e.preventDefault(),a.handleSelect(r,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(r);else if(\"Escape\"===t)e.preventDefault(),a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:pa});else if(!a.props.disabledKeyboardNavigation){var n;switch(t){case\"ArrowLeft\":n=Se.default(r,1);break;case\"ArrowRight\":n=De.default(r,1);break;case\"ArrowUp\":n=Ce.default(r,1);break;case\"ArrowDown\":n=ge.default(r,1);break;case\"PageUp\":n=_e.default(r,1);break;case\"PageDown\":n=we.default(r,1);break;case\"Home\":n=Ee.default(r,1);break;case\"End\":n=be.default(r,1)}if(!n)return void(a.props.onInputError&&a.props.onInputError({code:1,msg:pa}));if(e.preventDefault(),a.setState({lastPreSelectChange:da}),a.props.adjustDateOnChange&&a.setSelected(n),a.setPreSelection(n),a.props.inline){var o=Oe.default(r),s=Oe.default(n),i=Le.default(r),p=Le.default(n);o!==s||i!==p?a.setState({shouldFocusDayInline:!0}):a.setState({shouldFocusDayInline:!1})}}})),St(Pt(a),\"onPopperKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.sendFocusBackToInput())})),St(Pt(a),\"onClearClick\",(function(e){e&&e.preventDefault&&e.preventDefault(),a.sendFocusBackToInput(),a.props.selectsRange?a.props.onChange([null,null],e):a.props.onChange(null,e),a.setState({inputValue:null})})),St(Pt(a),\"clear\",(function(){a.onClearClick()})),St(Pt(a),\"onScroll\",(function(e){\"boolean\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll?e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||a.setOpen(!1):\"function\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll(e)&&a.setOpen(!1)})),St(Pt(a),\"renderCalendar\",(function(){return a.props.inline||a.isCalendarOpen()?de.default.createElement(ia,{ref:function(e){a.calendar=e},locale:a.props.locale,calendarStartDay:a.props.calendarStartDay,chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,monthAriaLabelPrefix:a.props.monthAriaLabelPrefix,adjustDateOnChange:a.props.adjustDateOnChange,setOpen:a.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,dateFormat:a.props.dateFormatCalendar,useWeekdaysShort:a.props.useWeekdaysShort,formatWeekDay:a.props.formatWeekDay,dropdownMode:a.props.dropdownMode,selected:a.props.selected,preSelection:a.state.preSelection,onSelect:a.handleSelect,onWeekSelect:a.props.onWeekSelect,openToDate:a.props.openToDate,minDate:a.props.minDate,maxDate:a.props.maxDate,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,startDate:a.props.startDate,endDate:a.props.endDate,excludeDates:a.props.excludeDates,excludeDateIntervals:a.props.excludeDateIntervals,filterDate:a.props.filterDate,onClickOutside:a.handleCalendarClickOutside,formatWeekNumber:a.props.formatWeekNumber,highlightDates:a.state.highlightDates,holidays:a.state.holidays,includeDates:a.props.includeDates,includeDateIntervals:a.props.includeDateIntervals,includeTimes:a.props.includeTimes,injectTimes:a.props.injectTimes,inline:a.props.inline,shouldFocusDayInline:a.state.shouldFocusDayInline,peekNextMonth:a.props.peekNextMonth,showMonthDropdown:a.props.showMonthDropdown,showPreviousMonths:a.props.showPreviousMonths,useShortMonthInDropdown:a.props.useShortMonthInDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showWeekNumbers:a.props.showWeekNumbers,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,forceShowMonthNavigation:a.props.forceShowMonthNavigation,showDisabledMonthNavigation:a.props.showDisabledMonthNavigation,scrollableYearDropdown:a.props.scrollableYearDropdown,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown,todayButton:a.props.todayButton,weekLabel:a.props.weekLabel,outsideClickIgnoreClass:sa,fixedHeight:a.props.fixedHeight,monthsShown:a.props.monthsShown,monthSelectedIn:a.state.monthSelectedIn,onDropdownFocus:a.handleDropdownFocus,onMonthChange:a.props.onMonthChange,onYearChange:a.props.onYearChange,dayClassName:a.props.dayClassName,weekDayClassName:a.props.weekDayClassName,monthClassName:a.props.monthClassName,timeClassName:a.props.timeClassName,showDateSelect:a.props.showDateSelect,showTimeSelect:a.props.showTimeSelect,showTimeSelectOnly:a.props.showTimeSelectOnly,onTimeChange:a.handleTimeChange,timeFormat:a.props.timeFormat,timeIntervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,className:a.props.calendarClassName,container:a.props.calendarContainer,yearItemNumber:a.props.yearItemNumber,yearDropdownItemNumber:a.props.yearDropdownItemNumber,previousMonthAriaLabel:a.props.previousMonthAriaLabel,previousMonthButtonLabel:a.props.previousMonthButtonLabel,nextMonthAriaLabel:a.props.nextMonthAriaLabel,nextMonthButtonLabel:a.props.nextMonthButtonLabel,previousYearAriaLabel:a.props.previousYearAriaLabel,previousYearButtonLabel:a.props.previousYearButtonLabel,nextYearAriaLabel:a.props.nextYearAriaLabel,nextYearButtonLabel:a.props.nextYearButtonLabel,timeInputLabel:a.props.timeInputLabel,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,renderCustomHeader:a.props.renderCustomHeader,popperProps:a.props.popperProps,renderDayContents:a.props.renderDayContents,renderMonthContent:a.props.renderMonthContent,renderQuarterContent:a.props.renderQuarterContent,renderYearContent:a.props.renderYearContent,onDayMouseEnter:a.props.onDayMouseEnter,onMonthMouseLeave:a.props.onMonthMouseLeave,onYearMouseEnter:a.props.onYearMouseEnter,onYearMouseLeave:a.props.onYearMouseLeave,selectsDisabledDaysInRange:a.props.selectsDisabledDaysInRange,showTimeInput:a.props.showTimeInput,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,showPopperArrow:a.props.showPopperArrow,excludeScrollbar:a.props.excludeScrollbar,handleOnKeyDown:a.props.onKeyDown,handleOnDayKeyDown:a.onDayKeyDown,isInputFocused:a.state.focused,customTimeInput:a.props.customTimeInput,setPreSelection:a.setPreSelection},a.props.children):null})),St(Pt(a),\"renderAriaLiveRegion\",(function(){var e,t=a.props,r=t.dateFormat,n=t.locale,o=a.props.showTimeInput||a.props.showTimeSelect?\"PPPPp\":\"PPPP\";return e=a.props.selectsRange?\"Selected start date: \".concat(Qt(a.props.startDate,{dateFormat:o,locale:n}),\". \").concat(a.props.endDate?\"End date: \"+Qt(a.props.endDate,{dateFormat:o,locale:n}):\"\"):a.props.showTimeSelectOnly?\"Selected time: \".concat(Qt(a.props.selected,{dateFormat:r,locale:n})):a.props.showYearPicker?\"Selected year: \".concat(Qt(a.props.selected,{dateFormat:\"yyyy\",locale:n})):a.props.showMonthYearPicker?\"Selected month: \".concat(Qt(a.props.selected,{dateFormat:\"MMMM yyyy\",locale:n})):a.props.showQuarterYearPicker?\"Selected quarter: \".concat(Qt(a.props.selected,{dateFormat:\"yyyy, QQQ\",locale:n})):\"Selected date: \".concat(Qt(a.props.selected,{dateFormat:o,locale:n})),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},e)})),St(Pt(a),\"renderDateInput\",(function(){var e,t=ue.default(a.props.className,St({},sa,a.state.open)),r=a.props.customInput||de.default.createElement(\"input\",{type:\"text\"}),n=a.props.customInputRef||\"ref\",o=\"string\"==typeof a.props.value?a.props.value:\"string\"==typeof a.state.inputValue?a.state.inputValue:a.props.selectsRange?function(e,t,r){if(!e)return\"\";var a=Qt(e,r),n=t?Qt(t,r):\"\";return\"\".concat(a,\" - \").concat(n)}(a.props.startDate,a.props.endDate,a.props):Qt(a.props.selected,a.props);return de.default.cloneElement(r,(St(e={},n,(function(e){a.input=e})),St(e,\"value\",o),St(e,\"onBlur\",a.handleBlur),St(e,\"onChange\",a.handleChange),St(e,\"onClick\",a.onInputClick),St(e,\"onFocus\",a.handleFocus),St(e,\"onKeyDown\",a.onInputKeyDown),St(e,\"id\",a.props.id),St(e,\"name\",a.props.name),St(e,\"form\",a.props.form),St(e,\"autoFocus\",a.props.autoFocus),St(e,\"placeholder\",a.props.placeholderText),St(e,\"disabled\",a.props.disabled),St(e,\"autoComplete\",a.props.autoComplete),St(e,\"className\",ue.default(r.props.className,t)),St(e,\"title\",a.props.title),St(e,\"readOnly\",a.props.readOnly),St(e,\"required\",a.props.required),St(e,\"tabIndex\",a.props.tabIndex),St(e,\"aria-describedby\",a.props.ariaDescribedBy),St(e,\"aria-invalid\",a.props.ariaInvalid),St(e,\"aria-labelledby\",a.props.ariaLabelledBy),St(e,\"aria-required\",a.props.ariaRequired),e))})),St(Pt(a),\"renderClearButton\",(function(){var e=a.props,t=e.isClearable,r=e.selected,n=e.startDate,o=e.endDate,s=e.clearButtonTitle,i=e.clearButtonClassName,p=void 0===i?\"\":i,l=e.ariaLabelClose,c=void 0===l?\"Close\":l;return!t||null==r&&null==n&&null==o?null:de.default.createElement(\"button\",{type:\"button\",className:\"react-datepicker__close-icon \".concat(p).trim(),\"aria-label\":c,onClick:a.onClearClick,title:s,tabIndex:-1})})),a.state=a.calcInitialState(),a.preventFocusTimeout=null,a}return bt(r,[{key:\"componentDidMount\",value:function(){window.addEventListener(\"scroll\",this.onScroll,!0)}},{key:\"componentDidUpdate\",value:function(e,t){var r,a;e.inline&&(r=e.selected,a=this.props.selected,r&&a?Oe.default(r)!==Oe.default(a)||Le.default(r)!==Le.default(a):r!==a)&&this.setPreSelection(this.props.selected),void 0!==this.state.monthSelectedIn&&e.monthsShown!==this.props.monthsShown&&this.setState({monthSelectedIn:0}),e.highlightDates!==this.props.highlightDates&&this.setState({highlightDates:br(this.props.highlightDates)}),t.focused||Xt(e.selected,this.props.selected)||this.setState({inputValue:null}),t.open!==this.state.open&&(!1===t.open&&!0===this.state.open&&this.props.onCalendarOpen(),!0===t.open&&!1===this.state.open&&this.props.onCalendarClose())}},{key:\"componentWillUnmount\",value:function(){this.clearPreventFocusTimeout(),window.removeEventListener(\"scroll\",this.onScroll,!0)}},{key:\"renderInputContainer\",value:function(){var e=this.props,t=e.showIcon,r=e.icon,a=e.calendarIconClassname;return de.default.createElement(\"div\",{className:\"react-datepicker__input-container\".concat(t?\" react-datepicker__view-calendar-icon\":\"\")},t&&de.default.createElement(ta,{icon:r,className:a}),this.state.isRenderAriaLiveMessage&&this.renderAriaLiveRegion(),this.renderDateInput(),this.renderClearButton())}},{key:\"render\",value:function(){var e=this.renderCalendar();if(this.props.inline)return e;if(this.props.withPortal){var t=this.state.open?de.default.createElement(na,{enableTabLoop:this.props.enableTabLoop},de.default.createElement(\"div\",{className:\"react-datepicker__portal\",tabIndex:-1,onKeyDown:this.onPortalKeyDown},e)):null;return this.state.open&&this.props.portalId&&(t=de.default.createElement(ra,{portalId:this.props.portalId,portalHost:this.props.portalHost},t)),de.default.createElement(\"div\",null,this.renderInputContainer(),t)}return de.default.createElement(oa,{className:this.props.popperClassName,wrapperClassName:this.props.wrapperClassName,hidePopper:!this.isCalendarOpen(),portalId:this.props.portalId,portalHost:this.props.portalHost,popperModifiers:this.props.popperModifiers,targetComponent:this.renderInputContainer(),popperContainer:this.props.popperContainer,popperComponent:e,popperPlacement:this.props.popperPlacement,popperProps:this.props.popperProps,popperOnKeyDown:this.onPopperKeyDown,enableTabLoop:this.props.enableTabLoop})}}],[{key:\"defaultProps\",get:function(){return{allowSameDay:!1,dateFormat:\"MM/dd/yyyy\",dateFormatCalendar:\"LLLL yyyy\",onChange:function(){},disabled:!1,disabledKeyboardNavigation:!1,dropdownMode:\"scroll\",onFocus:function(){},onBlur:function(){},onKeyDown:function(){},onInputClick:function(){},onSelect:function(){},onClickOutside:function(){},onMonthChange:function(){},onCalendarOpen:function(){},onCalendarClose:function(){},preventOpenOnFocus:!1,onYearChange:function(){},onInputError:function(){},monthsShown:1,readOnly:!1,withPortal:!1,selectsDisabledDaysInRange:!1,shouldCloseOnSelect:!0,showTimeSelect:!1,showTimeInput:!1,showPreviousMonths:!1,showMonthYearPicker:!1,showFullMonthYearPicker:!1,showTwoColumnMonthYearPicker:!1,showFourColumnMonthYearPicker:!1,showYearPicker:!1,showQuarterYearPicker:!1,strictParsing:!1,timeIntervals:30,timeCaption:\"Time\",previousMonthAriaLabel:\"Previous Month\",previousMonthButtonLabel:\"Previous Month\",nextMonthAriaLabel:\"Next Month\",nextMonthButtonLabel:\"Next Month\",previousYearAriaLabel:\"Previous Year\",previousYearButtonLabel:\"Previous Year\",nextYearAriaLabel:\"Next Year\",nextYearButtonLabel:\"Next Year\",timeInputLabel:\"Time\",enableTabLoop:!0,yearItemNumber:Lt,focusSelectedMonth:!1,showPopperArrow:!0,excludeScrollbar:!0,customTimeInput:null,calendarStartDay:void 0}}}]),r}(de.default.Component),ca=\"input\",da=\"navigate\";e.CalendarContainer=Xr,e.default=la,e.getDefaultLocale=er,e.registerLocale=function(e,t){var r=\"undefined\"!=typeof window?window:globalThis;r.__localeData__||(r.__localeData__={}),r.__localeData__[e]=t},e.setDefaultLocale=function(e){(\"undefined\"!=typeof window?window:globalThis).__localeId__=e},Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nvar _typeof3 = require(\"@babel/runtime/helpers/typeof\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _excluded = [\"element\", \"children\", \"tel\", \"sms\", \"facetime\", \"email\", \"href\", \"headers\", \"obfuscate\", \"obfuscateChildren\", \"linkText\", \"style\", \"onClick\"];\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction Obfuscate(props) {\n var element = props.element,\n children = props.children,\n tel = props.tel,\n sms = props.sms,\n facetime = props.facetime,\n email = props.email,\n href = props.href,\n headers = props.headers,\n obfuscate = props.obfuscate,\n obfuscateChildren = props.obfuscateChildren,\n linkText = props.linkText,\n style = props.style,\n onClick = props.onClick,\n others = (0, _objectWithoutProperties2[\"default\"])(props, _excluded);\n var _useState = (0, _react.useState)(false),\n _useState2 = (0, _slicedToArray2[\"default\"])(_useState, 2),\n humanInteraction = _useState2[0],\n setHumanInteraction = _useState2[1];\n var linkProps = children || tel || sms || facetime || email || href;\n var Component = element;\n var generateLink = function generateLink() {\n var link;\n\n // Combine email header parameters for use with email\n var combineHeaders = function combineHeaders(params) {\n return Object.keys(params).map(function (key) {\n return \"\".concat(key, \"=\").concat(encodeURIComponent(params[key]));\n }).join('&');\n };\n if (email) {\n link = \"mailto:\".concat(email);\n if (headers) {\n link += \"?\".concat(combineHeaders(headers));\n }\n } else if (tel) {\n link = \"tel:\".concat(tel);\n } else if (sms) {\n link = \"sms:\".concat(sms);\n } else if (facetime) {\n link = \"facetime:\".concat(facetime);\n } else if (href) {\n link = href;\n } else if ((0, _typeof2[\"default\"])(children) !== 'object') {\n link = children;\n } else {\n return '';\n }\n return link;\n };\n var handleClick = function handleClick() {\n // Allow instantiator to provide an onClick method to be called\n // before we change location (e.g. for analytics tracking)\n if (onClick && typeof onClick === 'function') {\n onClick();\n }\n\n // If focused or hovered, this js will be skipped with preference for html\n if (humanInteraction === false) {\n window.location.href = generateLink({\n email: email,\n headers: headers,\n tel: tel,\n sms: sms,\n facetime: facetime,\n href: href,\n children: children\n });\n }\n };\n var reverse = function reverse(content) {\n return typeof content !== 'undefined' && content.split('').reverse().join('').replace('(', ')').replace(')', '(');\n };\n var obfuscatedStyle = _objectSpread(_objectSpread({}, style), {}, {\n unicodeBidi: 'bidi-override',\n direction: humanInteraction === true || obfuscate === false || obfuscateChildren === false ? 'ltr' : 'rtl'\n });\n var renderedLink = humanInteraction === true || obfuscate === false || (0, _typeof2[\"default\"])(children) === 'object' || obfuscateChildren === false // Allow child elements\n ? linkProps : reverse(linkProps);\n var clickProps = Component === 'a' ? {\n href: humanInteraction === true || obfuscate === false ? generateLink() : linkText || 'obfuscated',\n onClick: handleClick\n } : {};\n return /*#__PURE__*/_react[\"default\"].createElement(Component, (0, _extends2[\"default\"])({\n onFocus: function onFocus() {\n return setHumanInteraction(true);\n },\n onMouseOver: function onMouseOver() {\n return setHumanInteraction(true);\n },\n onContextMenu: function onContextMenu() {\n return setHumanInteraction(true);\n }\n }, others, clickProps, {\n style: obfuscatedStyle\n }), renderedLink);\n}\nObfuscate.propTypes = {\n element: _propTypes[\"default\"].string,\n children: _propTypes[\"default\"].node,\n tel: _propTypes[\"default\"].string,\n sms: _propTypes[\"default\"].string,\n facetime: _propTypes[\"default\"].string,\n email: _propTypes[\"default\"].string,\n href: _propTypes[\"default\"].string,\n headers: _propTypes[\"default\"].shape({}),\n obfuscate: _propTypes[\"default\"].bool,\n obfuscateChildren: _propTypes[\"default\"].bool,\n linkText: _propTypes[\"default\"].string,\n style: _propTypes[\"default\"].shape({}),\n onClick: _propTypes[\"default\"].func\n};\nObfuscate.defaultProps = {\n element: 'a',\n children: undefined,\n tel: undefined,\n sms: undefined,\n facetime: undefined,\n email: undefined,\n href: undefined,\n headers: undefined,\n obfuscate: undefined,\n obfuscateChildren: undefined,\n linkText: undefined,\n style: {},\n onClick: undefined\n};\nvar _default = Obfuscate;\nexports[\"default\"] = _default;","import {createElement,Component}from'react';import {findDOMNode}from'react-dom';function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n // Also cover shadowRoot node by checking current.host\n\n\n while (current.parentNode || current.host) {\n // Only check normal node without shadowRoot\n if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode || current.host;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};function autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();var passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = {};\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions.passive = !instance.props.preventDefault;\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n }\n /**\n * Remove all document's event listeners for this component\n */\n ;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n }\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n ;\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props;\n _this$props.excludeScrollbar;\n var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}export default onClickOutsideHOC;export{IGNORE_CLASS_NAME};","import * as React from 'react';\nexport var ManagerReferenceNodeContext = React.createContext();\nexport var ManagerReferenceNodeSetterContext = React.createContext();\nexport function Manager(_ref) {\n var children = _ref.children;\n\n var _React$useState = React.useState(null),\n referenceNode = _React$useState[0],\n setReferenceNode = _React$useState[1];\n\n var hasUnmounted = React.useRef(false);\n React.useEffect(function () {\n return function () {\n hasUnmounted.current = true;\n };\n }, []);\n var handleSetReferenceNode = React.useCallback(function (node) {\n if (!hasUnmounted.current) {\n setReferenceNode(node);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, {\n value: referenceNode\n }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: handleSetReferenceNode\n }, children));\n}","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n ReactDOM.flushSync(function () {\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import * as React from 'react';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef } from './utils';\nimport { usePopper } from './usePopper';\n\nvar NOOP = function NOOP() {\n return void 0;\n};\n\nvar NOOP_PROMISE = function NOOP_PROMISE() {\n return Promise.resolve(null);\n};\n\nvar EMPTY_MODIFIERS = [];\nexport function Popper(_ref) {\n var _ref$placement = _ref.placement,\n placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,\n _ref$strategy = _ref.strategy,\n strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy,\n _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers,\n referenceElement = _ref.referenceElement,\n onFirstUpdate = _ref.onFirstUpdate,\n innerRef = _ref.innerRef,\n children = _ref.children;\n var referenceNode = React.useContext(ManagerReferenceNodeContext);\n\n var _React$useState = React.useState(null),\n popperElement = _React$useState[0],\n setPopperElement = _React$useState[1];\n\n var _React$useState2 = React.useState(null),\n arrowElement = _React$useState2[0],\n setArrowElement = _React$useState2[1];\n\n React.useEffect(function () {\n setRef(innerRef, popperElement);\n }, [innerRef, popperElement]);\n var options = React.useMemo(function () {\n return {\n placement: placement,\n strategy: strategy,\n onFirstUpdate: onFirstUpdate,\n modifiers: [].concat(modifiers, [{\n name: 'arrow',\n enabled: arrowElement != null,\n options: {\n element: arrowElement\n }\n }])\n };\n }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]);\n\n var _usePopper = usePopper(referenceElement || referenceNode, popperElement, options),\n state = _usePopper.state,\n styles = _usePopper.styles,\n forceUpdate = _usePopper.forceUpdate,\n update = _usePopper.update;\n\n var childrenProps = React.useMemo(function () {\n return {\n ref: setPopperElement,\n style: styles.popper,\n placement: state ? state.placement : placement,\n hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null,\n isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null,\n arrowProps: {\n style: styles.arrow,\n ref: setArrowElement\n },\n forceUpdate: forceUpdate || NOOP,\n update: update || NOOP_PROMISE\n };\n }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]);\n return unwrapArray(children)(childrenProps);\n}","import * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\nexport function Reference(_ref) {\n var children = _ref.children,\n innerRef = _ref.innerRef;\n var setReferenceNode = React.useContext(ManagerReferenceNodeSetterContext);\n var refHandler = React.useCallback(function (node) {\n setRef(innerRef, node);\n safeInvoke(setReferenceNode, node);\n }, [innerRef, setReferenceNode]); // ran on unmount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n React.useEffect(function () {\n return function () {\n return setRef(innerRef, null);\n };\n }, []);\n React.useEffect(function () {\n warning(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n }, [setReferenceNode]);\n return unwrapArray(children)({\n ref: refHandler\n });\n}","import React from 'react'\n\nlet renderErr = 'Renderer Error ☝️'\n\nexport const actions = {\n init: 'init',\n}\n\nexport const defaultRenderer = ({ value = '' }) => value;\nexport const emptyRenderer = () => <> ;\n\nexport const defaultColumn = {\n Cell: defaultRenderer,\n width: 150,\n minWidth: 0,\n maxWidth: Number.MAX_SAFE_INTEGER,\n}\n\nfunction mergeProps(...propList) {\n return propList.reduce((props, next) => {\n const { style, className, ...rest } = next\n\n props = {\n ...props,\n ...rest,\n }\n\n if (style) {\n props.style = props.style\n ? { ...(props.style || {}), ...(style || {}) }\n : style\n }\n\n if (className) {\n props.className = props.className\n ? props.className + ' ' + className\n : className\n }\n\n if (props.className === '') {\n delete props.className\n }\n\n return props\n }, {})\n}\n\nfunction handlePropGetter(prevProps, userProps, meta) {\n // Handle a lambda, pass it the previous props\n if (typeof userProps === 'function') {\n return handlePropGetter({}, userProps(prevProps, meta))\n }\n\n // Handle an array, merge each item as separate props\n if (Array.isArray(userProps)) {\n return mergeProps(prevProps, ...userProps)\n }\n\n // Handle an object by default, merge the two objects\n return mergeProps(prevProps, userProps)\n}\n\nexport const makePropGetter = (hooks, meta = {}) => {\n return (userProps = {}) =>\n [...hooks, userProps].reduce(\n (prev, next) =>\n handlePropGetter(prev, next, {\n ...meta,\n userProps,\n }),\n {}\n )\n}\n\nexport const reduceHooks = (hooks, initial, meta = {}, allowUndefined) =>\n hooks.reduce((prev, next) => {\n const nextValue = next(prev, meta)\n if (process.env.NODE_ENV !== 'production') {\n if (!allowUndefined && typeof nextValue === 'undefined') {\n console.info(next)\n throw new Error(\n 'React Table: A reducer hook ☝️ just returned undefined! This is not allowed.'\n )\n }\n }\n return nextValue\n }, initial)\n\nexport const loopHooks = (hooks, context, meta = {}) =>\n hooks.forEach(hook => {\n const nextValue = hook(context, meta)\n if (process.env.NODE_ENV !== 'production') {\n if (typeof nextValue !== 'undefined') {\n console.info(hook, nextValue)\n throw new Error(\n 'React Table: A loop-type hook ☝️ just returned a value! This is not allowed.'\n )\n }\n }\n })\n\nexport function ensurePluginOrder(plugins, befores, pluginName, afters) {\n if (process.env.NODE_ENV !== 'production' && afters) {\n throw new Error(\n `Defining plugins in the \"after\" section of ensurePluginOrder is no longer supported (see plugin ${pluginName})`\n )\n }\n const pluginIndex = plugins.findIndex(\n plugin => plugin.pluginName === pluginName\n )\n\n if (pluginIndex === -1) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`The plugin \"${pluginName}\" was not found in the plugin list!\nThis usually means you need to need to name your plugin hook by setting the 'pluginName' property of the hook function, eg:\n\n ${pluginName}.pluginName = '${pluginName}'\n`)\n }\n }\n\n befores.forEach(before => {\n const beforeIndex = plugins.findIndex(\n plugin => plugin.pluginName === before\n )\n if (beforeIndex > -1 && beforeIndex > pluginIndex) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n `React Table: The ${pluginName} plugin hook must be placed after the ${before} plugin hook!`\n )\n }\n }\n })\n}\n\nexport function functionalUpdate(updater, old) {\n return typeof updater === 'function' ? updater(old) : updater\n}\n\nexport function useGetLatest(obj) {\n const ref = React.useRef()\n ref.current = obj\n\n return React.useCallback(() => ref.current, [])\n}\n\n// SSR has issues with useLayoutEffect still, so use useEffect during SSR\nexport const safeUseLayoutEffect =\n typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport function useMountedLayoutEffect(fn, deps) {\n const mountedRef = React.useRef(false)\n\n safeUseLayoutEffect(() => {\n if (mountedRef.current) {\n fn()\n }\n mountedRef.current = true\n // eslint-disable-next-line\n }, deps)\n}\n\nexport function useAsyncDebounce(defaultFn, defaultWait = 0) {\n const debounceRef = React.useRef({})\n\n const getDefaultFn = useGetLatest(defaultFn)\n const getDefaultWait = useGetLatest(defaultWait)\n\n return React.useCallback(\n async (...args) => {\n if (!debounceRef.current.promise) {\n debounceRef.current.promise = new Promise((resolve, reject) => {\n debounceRef.current.resolve = resolve\n debounceRef.current.reject = reject\n })\n }\n\n if (debounceRef.current.timeout) {\n clearTimeout(debounceRef.current.timeout)\n }\n\n debounceRef.current.timeout = setTimeout(async () => {\n delete debounceRef.current.timeout\n try {\n debounceRef.current.resolve(await getDefaultFn()(...args))\n } catch (err) {\n debounceRef.current.reject(err)\n } finally {\n delete debounceRef.current.promise\n }\n }, getDefaultWait())\n\n return debounceRef.current.promise\n },\n [getDefaultFn, getDefaultWait]\n )\n}\n\nexport function makeRenderer(instance, column, meta = {}) {\n return (type, userProps = {}) => {\n const Comp = typeof type === 'string' ? column[type] : type\n\n if (typeof Comp === 'undefined') {\n console.info(column)\n throw new Error(renderErr)\n }\n\n return flexRender(Comp, { ...instance, column, ...meta, ...userProps })\n }\n}\n\nexport function flexRender(Comp, props) {\n return isReactComponent(Comp) ? : Comp\n}\n\nfunction isReactComponent(component) {\n return (\n isClassComponent(component) ||\n typeof component === 'function' ||\n isExoticComponent(component)\n )\n}\n\nfunction isClassComponent(component) {\n return (\n typeof component === 'function' &&\n (() => {\n const proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isExoticComponent(component) {\n return (\n typeof component === 'object' &&\n typeof component.$$typeof === 'symbol' &&\n ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n )\n}\n","import { defaultColumn, emptyRenderer } from './publicUtils'\n\n// Find the depth of the columns\nexport function findMaxDepth(columns, depth = 0) {\n return columns.reduce((prev, curr) => {\n if (curr.columns) {\n return Math.max(prev, findMaxDepth(curr.columns, depth + 1))\n }\n return depth\n }, 0)\n}\n\n// Build the visible columns, headers and flat column list\nexport function linkColumnStructure(columns, parent, depth = 0) {\n return columns.map(column => {\n column = {\n ...column,\n parent,\n depth,\n }\n\n assignColumnAccessor(column)\n\n if (column.columns) {\n column.columns = linkColumnStructure(column.columns, column, depth + 1)\n }\n return column\n })\n}\n\nexport function flattenColumns(columns) {\n return flattenBy(columns, 'columns')\n}\n\nexport function assignColumnAccessor(column) {\n // First check for string accessor\n let { id, accessor, Header } = column\n\n if (typeof accessor === 'string') {\n id = id || accessor\n const accessorPath = accessor.split('.')\n accessor = row => getBy(row, accessorPath)\n }\n\n if (!id && typeof Header === 'string' && Header) {\n id = Header\n }\n\n if (!id && column.columns) {\n console.error(column)\n throw new Error('A column ID (or unique \"Header\" value) is required!')\n }\n\n if (!id) {\n console.error(column)\n throw new Error('A column ID (or string accessor) is required!')\n }\n\n Object.assign(column, {\n id,\n accessor,\n })\n\n return column\n}\n\nexport function decorateColumn(column, userDefaultColumn) {\n if (!userDefaultColumn) {\n throw new Error()\n }\n Object.assign(column, {\n // Make sure there is a fallback header, just in case\n Header: emptyRenderer,\n Footer: emptyRenderer,\n ...defaultColumn,\n ...userDefaultColumn,\n ...column,\n })\n\n Object.assign(column, {\n originalWidth: column.width,\n })\n\n return column\n}\n\n// Build the header groups from the bottom up\nexport function makeHeaderGroups(\n allColumns,\n defaultColumn,\n additionalHeaderProperties = () => ({})\n) {\n const headerGroups = []\n\n let scanColumns = allColumns\n\n let uid = 0\n const getUID = () => uid++\n\n while (scanColumns.length) {\n // The header group we are creating\n const headerGroup = {\n headers: [],\n }\n\n // The parent columns we're going to scan next\n const parentColumns = []\n\n const hasParents = scanColumns.some(d => d.parent)\n\n // Scan each column for parents\n scanColumns.forEach(column => {\n // What is the latest (last) parent column?\n let latestParentColumn = [...parentColumns].reverse()[0]\n\n let newParent\n\n if (hasParents) {\n // If the column has a parent, add it if necessary\n if (column.parent) {\n newParent = {\n ...column.parent,\n originalId: column.parent.id,\n id: `${column.parent.id}_${getUID()}`,\n headers: [column],\n ...additionalHeaderProperties(column),\n }\n } else {\n // If other columns have parents, we'll need to add a place holder if necessary\n const originalId = `${column.id}_placeholder`\n newParent = decorateColumn(\n {\n originalId,\n id: `${column.id}_placeholder_${getUID()}`,\n placeholderOf: column,\n headers: [column],\n ...additionalHeaderProperties(column),\n },\n defaultColumn\n )\n }\n\n // If the resulting parent columns are the same, just add\n // the column and increment the header span\n if (\n latestParentColumn &&\n latestParentColumn.originalId === newParent.originalId\n ) {\n latestParentColumn.headers.push(column)\n } else {\n parentColumns.push(newParent)\n }\n }\n\n headerGroup.headers.push(column)\n })\n\n headerGroups.push(headerGroup)\n\n // Start scanning the parent columns\n scanColumns = parentColumns\n }\n\n return headerGroups.reverse()\n}\n\nconst pathObjCache = new Map()\n\nexport function getBy(obj, path, def) {\n if (!path) {\n return obj\n }\n const cacheKey = typeof path === 'function' ? path : JSON.stringify(path)\n\n const pathObj =\n pathObjCache.get(cacheKey) ||\n (() => {\n const pathObj = makePathArray(path)\n pathObjCache.set(cacheKey, pathObj)\n return pathObj\n })()\n\n let val\n\n try {\n val = pathObj.reduce((cursor, pathPart) => cursor[pathPart], obj)\n } catch (e) {\n // continue regardless of error\n }\n return typeof val !== 'undefined' ? val : def\n}\n\nexport function getFirstDefined(...args) {\n for (let i = 0; i < args.length; i += 1) {\n if (typeof args[i] !== 'undefined') {\n return args[i]\n }\n }\n}\n\nexport function getElementDimensions(element) {\n const rect = element.getBoundingClientRect()\n const style = window.getComputedStyle(element)\n const margins = {\n left: parseInt(style.marginLeft),\n right: parseInt(style.marginRight),\n }\n const padding = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight),\n }\n return {\n left: Math.ceil(rect.left),\n width: Math.ceil(rect.width),\n outerWidth: Math.ceil(\n rect.width + margins.left + margins.right + padding.left + padding.right\n ),\n marginLeft: margins.left,\n marginRight: margins.right,\n paddingLeft: padding.left,\n paddingRight: padding.right,\n scrollWidth: element.scrollWidth,\n }\n}\n\nexport function isFunction(a) {\n if (typeof a === 'function') {\n return a\n }\n}\n\nexport function flattenBy(arr, key) {\n const flat = []\n\n const recurse = arr => {\n arr.forEach(d => {\n if (!d[key]) {\n flat.push(d)\n } else {\n recurse(d[key])\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function expandRows(\n rows,\n { manualExpandedKey, expanded, expandSubRows = true }\n) {\n const expandedRows = []\n\n const handleRow = (row, addToExpandedRows = true) => {\n row.isExpanded =\n (row.original && row.original[manualExpandedKey]) || expanded[row.id]\n\n row.canExpand = row.subRows && !!row.subRows.length\n\n if (addToExpandedRows) {\n expandedRows.push(row)\n }\n\n if (row.subRows && row.subRows.length && row.isExpanded) {\n row.subRows.forEach(row => handleRow(row, expandSubRows))\n }\n }\n\n rows.forEach(row => handleRow(row))\n\n return expandedRows\n}\n\nexport function getFilterMethod(filter, userFilterTypes, filterTypes) {\n return (\n isFunction(filter) ||\n userFilterTypes[filter] ||\n filterTypes[filter] ||\n filterTypes.text\n )\n}\n\nexport function shouldAutoRemoveFilter(autoRemove, value, column) {\n return autoRemove ? autoRemove(value, column) : typeof value === 'undefined'\n}\n\nexport function unpreparedAccessWarning() {\n throw new Error(\n 'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.'\n )\n}\n\nlet passiveSupported = null\nexport function passiveEventSupported() {\n // memoize support to avoid adding multiple test events\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n window.addEventListener('test', null, options)\n window.removeEventListener('test', null, options)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\n//\n\nconst reOpenBracket = /\\[/g\nconst reCloseBracket = /\\]/g\n\nfunction makePathArray(obj) {\n return (\n flattenDeep(obj)\n // remove all periods in parts\n .map(d => String(d).replace('.', '_'))\n // join parts using period\n .join('.')\n // replace brackets with periods\n .replace(reOpenBracket, '.')\n .replace(reCloseBracket, '')\n // split it back out on periods\n .split('.')\n )\n}\n\nfunction flattenDeep(arr, newArr = []) {\n if (!Array.isArray(arr)) {\n newArr.push(arr)\n } else {\n for (let i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], newArr)\n }\n }\n return newArr\n}\n","const defaultGetTableProps = props => ({\n role: 'table',\n ...props,\n})\n\nconst defaultGetTableBodyProps = props => ({\n role: 'rowgroup',\n ...props,\n})\n\nconst defaultGetHeaderProps = (props, { column }) => ({\n key: `header_${column.id}`,\n colSpan: column.totalVisibleHeaderCount,\n role: 'columnheader',\n ...props,\n})\n\nconst defaultGetFooterProps = (props, { column }) => ({\n key: `footer_${column.id}`,\n colSpan: column.totalVisibleHeaderCount,\n ...props,\n})\n\nconst defaultGetHeaderGroupProps = (props, { index }) => ({\n key: `headerGroup_${index}`,\n role: 'row',\n ...props,\n})\n\nconst defaultGetFooterGroupProps = (props, { index }) => ({\n key: `footerGroup_${index}`,\n ...props,\n})\n\nconst defaultGetRowProps = (props, { row }) => ({\n key: `row_${row.id}`,\n role: 'row',\n ...props,\n})\n\nconst defaultGetCellProps = (props, { cell }) => ({\n key: `cell_${cell.row.id}_${cell.column.id}`,\n role: 'cell',\n ...props,\n})\n\nexport default function makeDefaultPluginHooks() {\n return {\n useOptions: [],\n stateReducers: [],\n useControlledState: [],\n columns: [],\n columnsDeps: [],\n allColumns: [],\n allColumnsDeps: [],\n accessValue: [],\n materializedColumns: [],\n materializedColumnsDeps: [],\n useInstanceAfterData: [],\n visibleColumns: [],\n visibleColumnsDeps: [],\n headerGroups: [],\n headerGroupsDeps: [],\n useInstanceBeforeDimensions: [],\n useInstance: [],\n prepareRow: [],\n getTableProps: [defaultGetTableProps],\n getTableBodyProps: [defaultGetTableBodyProps],\n getHeaderGroupProps: [defaultGetHeaderGroupProps],\n getFooterGroupProps: [defaultGetFooterGroupProps],\n getHeaderProps: [defaultGetHeaderProps],\n getFooterProps: [defaultGetFooterProps],\n getRowProps: [defaultGetRowProps],\n getCellProps: [defaultGetCellProps],\n useFinalInstance: [],\n }\n}\n","import React from 'react'\n\nimport {\n actions,\n functionalUpdate,\n useGetLatest,\n makePropGetter,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nactions.resetHiddenColumns = 'resetHiddenColumns'\nactions.toggleHideColumn = 'toggleHideColumn'\nactions.setHiddenColumns = 'setHiddenColumns'\nactions.toggleHideAllColumns = 'toggleHideAllColumns'\n\nexport const useColumnVisibility = hooks => {\n hooks.getToggleHiddenProps = [defaultGetToggleHiddenProps]\n hooks.getToggleHideAllColumnsProps = [defaultGetToggleHideAllColumnsProps]\n\n hooks.stateReducers.push(reducer)\n hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n hooks.headerGroupsDeps.push((deps, { instance }) => [\n ...deps,\n instance.state.hiddenColumns,\n ])\n hooks.useInstance.push(useInstance)\n}\n\nuseColumnVisibility.pluginName = 'useColumnVisibility'\n\nconst defaultGetToggleHiddenProps = (props, { column }) => [\n props,\n {\n onChange: e => {\n column.toggleHidden(!e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: column.isVisible,\n title: 'Toggle Column Visible',\n },\n]\n\nconst defaultGetToggleHideAllColumnsProps = (props, { instance }) => [\n props,\n {\n onChange: e => {\n instance.toggleHideAllColumns(!e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: !instance.allColumnsHidden && !instance.state.hiddenColumns.length,\n title: 'Toggle All Columns Hidden',\n indeterminate:\n !instance.allColumnsHidden && instance.state.hiddenColumns.length,\n },\n]\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n hiddenColumns: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetHiddenColumns) {\n return {\n ...state,\n hiddenColumns: instance.initialState.hiddenColumns || [],\n }\n }\n\n if (action.type === actions.toggleHideColumn) {\n const should =\n typeof action.value !== 'undefined'\n ? action.value\n : !state.hiddenColumns.includes(action.columnId)\n\n const hiddenColumns = should\n ? [...state.hiddenColumns, action.columnId]\n : state.hiddenColumns.filter(d => d !== action.columnId)\n\n return {\n ...state,\n hiddenColumns,\n }\n }\n\n if (action.type === actions.setHiddenColumns) {\n return {\n ...state,\n hiddenColumns: functionalUpdate(action.value, state.hiddenColumns),\n }\n }\n\n if (action.type === actions.toggleHideAllColumns) {\n const shouldAll =\n typeof action.value !== 'undefined'\n ? action.value\n : !state.hiddenColumns.length\n\n return {\n ...state,\n hiddenColumns: shouldAll ? instance.allColumns.map(d => d.id) : [],\n }\n }\n}\n\nfunction useInstanceBeforeDimensions(instance) {\n const {\n headers,\n state: { hiddenColumns },\n } = instance\n\n const isMountedRef = React.useRef(false)\n\n if (!isMountedRef.current) {\n }\n\n const handleColumn = (column, parentVisible) => {\n column.isVisible = parentVisible && !hiddenColumns.includes(column.id)\n\n let totalVisibleHeaderCount = 0\n\n if (column.headers && column.headers.length) {\n column.headers.forEach(\n subColumn =>\n (totalVisibleHeaderCount += handleColumn(subColumn, column.isVisible))\n )\n } else {\n totalVisibleHeaderCount = column.isVisible ? 1 : 0\n }\n\n column.totalVisibleHeaderCount = totalVisibleHeaderCount\n\n return totalVisibleHeaderCount\n }\n\n let totalVisibleHeaderCount = 0\n\n headers.forEach(\n subHeader => (totalVisibleHeaderCount += handleColumn(subHeader, true))\n )\n}\n\nfunction useInstance(instance) {\n const {\n columns,\n flatHeaders,\n dispatch,\n allColumns,\n getHooks,\n state: { hiddenColumns },\n autoResetHiddenColumns = true,\n } = instance\n\n const getInstance = useGetLatest(instance)\n\n const allColumnsHidden = allColumns.length === hiddenColumns.length\n\n const toggleHideColumn = React.useCallback(\n (columnId, value) =>\n dispatch({ type: actions.toggleHideColumn, columnId, value }),\n [dispatch]\n )\n\n const setHiddenColumns = React.useCallback(\n value => dispatch({ type: actions.setHiddenColumns, value }),\n [dispatch]\n )\n\n const toggleHideAllColumns = React.useCallback(\n value => dispatch({ type: actions.toggleHideAllColumns, value }),\n [dispatch]\n )\n\n const getToggleHideAllColumnsProps = makePropGetter(\n getHooks().getToggleHideAllColumnsProps,\n { instance: getInstance() }\n )\n\n flatHeaders.forEach(column => {\n column.toggleHidden = value => {\n dispatch({\n type: actions.toggleHideColumn,\n columnId: column.id,\n value,\n })\n }\n\n column.getToggleHiddenProps = makePropGetter(\n getHooks().getToggleHiddenProps,\n {\n instance: getInstance(),\n column,\n }\n )\n })\n\n const getAutoResetHiddenColumns = useGetLatest(autoResetHiddenColumns)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetHiddenColumns()) {\n dispatch({ type: actions.resetHiddenColumns })\n }\n }, [dispatch, columns])\n\n Object.assign(instance, {\n allColumnsHidden,\n toggleHideColumn,\n setHiddenColumns,\n toggleHideAllColumns,\n getToggleHideAllColumnsProps,\n })\n}\n","import React from 'react'\n\n//\n\nimport {\n linkColumnStructure,\n flattenColumns,\n assignColumnAccessor,\n unpreparedAccessWarning,\n makeHeaderGroups,\n decorateColumn,\n} from '../utils'\n\nimport {\n useGetLatest,\n reduceHooks,\n actions,\n loopHooks,\n makePropGetter,\n makeRenderer,\n} from '../publicUtils'\n\nimport makeDefaultPluginHooks from '../makeDefaultPluginHooks'\n\nimport { useColumnVisibility } from './useColumnVisibility'\n\nconst defaultInitialState = {}\nconst defaultColumnInstance = {}\nconst defaultReducer = (state, action, prevState) => state\nconst defaultGetSubRows = (row, index) => row.subRows || []\nconst defaultGetRowId = (row, index, parent) =>\n `${parent ? [parent.id, index].join('.') : index}`\nconst defaultUseControlledState = d => d\n\nfunction applyDefaults(props) {\n const {\n initialState = defaultInitialState,\n defaultColumn = defaultColumnInstance,\n getSubRows = defaultGetSubRows,\n getRowId = defaultGetRowId,\n stateReducer = defaultReducer,\n useControlledState = defaultUseControlledState,\n ...rest\n } = props\n\n return {\n ...rest,\n initialState,\n defaultColumn,\n getSubRows,\n getRowId,\n stateReducer,\n useControlledState,\n }\n}\n\nexport const useTable = (props, ...plugins) => {\n // Apply default props\n props = applyDefaults(props)\n\n // Add core plugins\n plugins = [useColumnVisibility, ...plugins]\n\n // Create the table instance\n let instanceRef = React.useRef({})\n\n // Create a getter for the instance (helps avoid a lot of potential memory leaks)\n const getInstance = useGetLatest(instanceRef.current)\n\n // Assign the props, plugins and hooks to the instance\n Object.assign(getInstance(), {\n ...props,\n plugins,\n hooks: makeDefaultPluginHooks(),\n })\n\n // Allow plugins to register hooks as early as possible\n plugins.filter(Boolean).forEach(plugin => {\n plugin(getInstance().hooks)\n })\n\n // Consume all hooks and make a getter for them\n const getHooks = useGetLatest(getInstance().hooks)\n getInstance().getHooks = getHooks\n delete getInstance().hooks\n\n // Allow useOptions hooks to modify the options coming into the table\n Object.assign(\n getInstance(),\n reduceHooks(getHooks().useOptions, applyDefaults(props))\n )\n\n const {\n data,\n columns: userColumns,\n initialState,\n defaultColumn,\n getSubRows,\n getRowId,\n stateReducer,\n useControlledState,\n } = getInstance()\n\n // Setup user reducer ref\n const getStateReducer = useGetLatest(stateReducer)\n\n // Build the reducer\n const reducer = React.useCallback(\n (state, action) => {\n // Detect invalid actions\n if (!action.type) {\n console.info({ action })\n throw new Error('Unknown Action 👆')\n }\n\n // Reduce the state from all plugin reducers\n return [\n ...getHooks().stateReducers,\n // Allow the user to add their own state reducer(s)\n ...(Array.isArray(getStateReducer())\n ? getStateReducer()\n : [getStateReducer()]),\n ].reduce(\n (s, handler) => handler(s, action, state, getInstance()) || s,\n state\n )\n },\n [getHooks, getStateReducer, getInstance]\n )\n\n // Start the reducer\n const [reducerState, dispatch] = React.useReducer(reducer, undefined, () =>\n reducer(initialState, { type: actions.init })\n )\n\n // Allow the user to control the final state with hooks\n const state = reduceHooks(\n [...getHooks().useControlledState, useControlledState],\n reducerState,\n { instance: getInstance() }\n )\n\n Object.assign(getInstance(), {\n state,\n dispatch,\n })\n\n // Decorate All the columns\n const columns = React.useMemo(\n () =>\n linkColumnStructure(\n reduceHooks(getHooks().columns, userColumns, {\n instance: getInstance(),\n })\n ),\n [\n getHooks,\n getInstance,\n userColumns,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().columnsDeps, [], { instance: getInstance() }),\n ]\n )\n getInstance().columns = columns\n\n // Get the flat list of all columns and allow hooks to decorate\n // those columns (and trigger this memoization via deps)\n let allColumns = React.useMemo(\n () =>\n reduceHooks(getHooks().allColumns, flattenColumns(columns), {\n instance: getInstance(),\n }).map(assignColumnAccessor),\n [\n columns,\n getHooks,\n getInstance,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().allColumnsDeps, [], {\n instance: getInstance(),\n }),\n ]\n )\n getInstance().allColumns = allColumns\n\n // Access the row model using initial columns\n const [rows, flatRows, rowsById] = React.useMemo(() => {\n let rows = []\n let flatRows = []\n const rowsById = {}\n\n const allColumnsQueue = [...allColumns]\n\n while (allColumnsQueue.length) {\n const column = allColumnsQueue.shift()\n accessRowsForColumn({\n data,\n rows,\n flatRows,\n rowsById,\n column,\n getRowId,\n getSubRows,\n accessValueHooks: getHooks().accessValue,\n getInstance,\n })\n }\n\n return [rows, flatRows, rowsById]\n }, [allColumns, data, getRowId, getSubRows, getHooks, getInstance])\n\n Object.assign(getInstance(), {\n rows,\n initialRows: [...rows],\n flatRows,\n rowsById,\n // materializedColumns,\n })\n\n loopHooks(getHooks().useInstanceAfterData, getInstance())\n\n // Get the flat list of all columns AFTER the rows\n // have been access, and allow hooks to decorate\n // those columns (and trigger this memoization via deps)\n let visibleColumns = React.useMemo(\n () =>\n reduceHooks(getHooks().visibleColumns, allColumns, {\n instance: getInstance(),\n }).map(d => decorateColumn(d, defaultColumn)),\n [\n getHooks,\n allColumns,\n getInstance,\n defaultColumn,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().visibleColumnsDeps, [], {\n instance: getInstance(),\n }),\n ]\n )\n\n // Combine new visible columns with all columns\n allColumns = React.useMemo(() => {\n const columns = [...visibleColumns]\n\n allColumns.forEach(column => {\n if (!columns.find(d => d.id === column.id)) {\n columns.push(column)\n }\n })\n\n return columns\n }, [allColumns, visibleColumns])\n getInstance().allColumns = allColumns\n\n if (process.env.NODE_ENV !== 'production') {\n const duplicateColumns = allColumns.filter((column, i) => {\n return allColumns.findIndex(d => d.id === column.id) !== i\n })\n\n if (duplicateColumns.length) {\n console.info(allColumns)\n throw new Error(\n `Duplicate columns were found with ids: \"${duplicateColumns\n .map(d => d.id)\n .join(', ')}\" in the columns array above`\n )\n }\n }\n\n // Make the headerGroups\n const headerGroups = React.useMemo(\n () =>\n reduceHooks(\n getHooks().headerGroups,\n makeHeaderGroups(visibleColumns, defaultColumn),\n getInstance()\n ),\n [\n getHooks,\n visibleColumns,\n defaultColumn,\n getInstance,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().headerGroupsDeps, [], {\n instance: getInstance(),\n }),\n ]\n )\n getInstance().headerGroups = headerGroups\n\n // Get the first level of headers\n const headers = React.useMemo(\n () => (headerGroups.length ? headerGroups[0].headers : []),\n [headerGroups]\n )\n getInstance().headers = headers\n\n // Provide a flat header list for utilities\n getInstance().flatHeaders = headerGroups.reduce(\n (all, headerGroup) => [...all, ...headerGroup.headers],\n []\n )\n\n loopHooks(getHooks().useInstanceBeforeDimensions, getInstance())\n\n // Filter columns down to visible ones\n const visibleColumnsDep = visibleColumns\n .filter(d => d.isVisible)\n .map(d => d.id)\n .sort()\n .join('_')\n\n visibleColumns = React.useMemo(\n () => visibleColumns.filter(d => d.isVisible),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [visibleColumns, visibleColumnsDep]\n )\n getInstance().visibleColumns = visibleColumns\n\n // Header Visibility is needed by this point\n const [\n totalColumnsMinWidth,\n totalColumnsWidth,\n totalColumnsMaxWidth,\n ] = calculateHeaderWidths(headers)\n\n getInstance().totalColumnsMinWidth = totalColumnsMinWidth\n getInstance().totalColumnsWidth = totalColumnsWidth\n getInstance().totalColumnsMaxWidth = totalColumnsMaxWidth\n\n loopHooks(getHooks().useInstance, getInstance())\n\n // Each materialized header needs to be assigned a render function and other\n // prop getter properties here.\n ;[...getInstance().flatHeaders, ...getInstance().allColumns].forEach(\n column => {\n // Give columns/headers rendering power\n column.render = makeRenderer(getInstance(), column)\n\n // Give columns/headers a default getHeaderProps\n column.getHeaderProps = makePropGetter(getHooks().getHeaderProps, {\n instance: getInstance(),\n column,\n })\n\n // Give columns/headers a default getFooterProps\n column.getFooterProps = makePropGetter(getHooks().getFooterProps, {\n instance: getInstance(),\n column,\n })\n }\n )\n\n getInstance().headerGroups = React.useMemo(\n () =>\n headerGroups.filter((headerGroup, i) => {\n // Filter out any headers and headerGroups that don't have visible columns\n headerGroup.headers = headerGroup.headers.filter(column => {\n const recurse = headers =>\n headers.filter(column => {\n if (column.headers) {\n return recurse(column.headers)\n }\n return column.isVisible\n }).length\n if (column.headers) {\n return recurse(column.headers)\n }\n return column.isVisible\n })\n\n // Give headerGroups getRowProps\n if (headerGroup.headers.length) {\n headerGroup.getHeaderGroupProps = makePropGetter(\n getHooks().getHeaderGroupProps,\n { instance: getInstance(), headerGroup, index: i }\n )\n\n headerGroup.getFooterGroupProps = makePropGetter(\n getHooks().getFooterGroupProps,\n { instance: getInstance(), headerGroup, index: i }\n )\n\n return true\n }\n\n return false\n }),\n [headerGroups, getInstance, getHooks]\n )\n\n getInstance().footerGroups = [...getInstance().headerGroups].reverse()\n\n // The prepareRow function is absolutely necessary and MUST be called on\n // any rows the user wishes to be displayed.\n\n getInstance().prepareRow = React.useCallback(\n row => {\n row.getRowProps = makePropGetter(getHooks().getRowProps, {\n instance: getInstance(),\n row,\n })\n\n // Build the visible cells for each row\n row.allCells = allColumns.map(column => {\n const value = row.values[column.id]\n\n const cell = {\n column,\n row,\n value,\n }\n\n // Give each cell a getCellProps base\n cell.getCellProps = makePropGetter(getHooks().getCellProps, {\n instance: getInstance(),\n cell,\n })\n\n // Give each cell a renderer function (supports multiple renderers)\n cell.render = makeRenderer(getInstance(), column, {\n row,\n cell,\n value,\n })\n\n return cell\n })\n\n row.cells = visibleColumns.map(column =>\n row.allCells.find(cell => cell.column.id === column.id)\n )\n\n // need to apply any row specific hooks (useExpanded requires this)\n loopHooks(getHooks().prepareRow, row, { instance: getInstance() })\n },\n [getHooks, getInstance, allColumns, visibleColumns]\n )\n\n getInstance().getTableProps = makePropGetter(getHooks().getTableProps, {\n instance: getInstance(),\n })\n\n getInstance().getTableBodyProps = makePropGetter(\n getHooks().getTableBodyProps,\n {\n instance: getInstance(),\n }\n )\n\n loopHooks(getHooks().useFinalInstance, getInstance())\n\n return getInstance()\n}\n\nfunction calculateHeaderWidths(headers, left = 0) {\n let sumTotalMinWidth = 0\n let sumTotalWidth = 0\n let sumTotalMaxWidth = 0\n let sumTotalFlexWidth = 0\n\n headers.forEach(header => {\n let { headers: subHeaders } = header\n\n header.totalLeft = left\n\n if (subHeaders && subHeaders.length) {\n const [\n totalMinWidth,\n totalWidth,\n totalMaxWidth,\n totalFlexWidth,\n ] = calculateHeaderWidths(subHeaders, left)\n header.totalMinWidth = totalMinWidth\n header.totalWidth = totalWidth\n header.totalMaxWidth = totalMaxWidth\n header.totalFlexWidth = totalFlexWidth\n } else {\n header.totalMinWidth = header.minWidth\n header.totalWidth = Math.min(\n Math.max(header.minWidth, header.width),\n header.maxWidth\n )\n header.totalMaxWidth = header.maxWidth\n header.totalFlexWidth = header.canResize ? header.totalWidth : 0\n }\n if (header.isVisible) {\n left += header.totalWidth\n sumTotalMinWidth += header.totalMinWidth\n sumTotalWidth += header.totalWidth\n sumTotalMaxWidth += header.totalMaxWidth\n sumTotalFlexWidth += header.totalFlexWidth\n }\n })\n\n return [sumTotalMinWidth, sumTotalWidth, sumTotalMaxWidth, sumTotalFlexWidth]\n}\n\nfunction accessRowsForColumn({\n data,\n rows,\n flatRows,\n rowsById,\n column,\n getRowId,\n getSubRows,\n accessValueHooks,\n getInstance,\n}) {\n // Access the row's data column-by-column\n // We do it this way so we can incrementally add materialized\n // columns after the first pass and avoid excessive looping\n const accessRow = (originalRow, rowIndex, depth = 0, parent, parentRows) => {\n // Keep the original reference around\n const original = originalRow\n\n const id = getRowId(originalRow, rowIndex, parent)\n\n let row = rowsById[id]\n\n // If the row hasn't been created, let's make it\n if (!row) {\n row = {\n id,\n original,\n index: rowIndex,\n depth,\n cells: [{}], // This is a dummy cell\n }\n\n // Override common array functions (and the dummy cell's getCellProps function)\n // to show an error if it is accessed without calling prepareRow\n row.cells.map = unpreparedAccessWarning\n row.cells.filter = unpreparedAccessWarning\n row.cells.forEach = unpreparedAccessWarning\n row.cells[0].getCellProps = unpreparedAccessWarning\n\n // Create the cells and values\n row.values = {}\n\n // Push this row into the parentRows array\n parentRows.push(row)\n // Keep track of every row in a flat array\n flatRows.push(row)\n // Also keep track of every row by its ID\n rowsById[id] = row\n\n // Get the original subrows\n row.originalSubRows = getSubRows(originalRow, rowIndex)\n\n // Then recursively access them\n if (row.originalSubRows) {\n const subRows = []\n row.originalSubRows.forEach((d, i) =>\n accessRow(d, i, depth + 1, row, subRows)\n )\n // Keep the new subRows array on the row\n row.subRows = subRows\n }\n } else if (row.subRows) {\n // If the row exists, then it's already been accessed\n // Keep recursing, but don't worry about passing the\n // accumlator array (those rows already exist)\n row.originalSubRows.forEach((d, i) => accessRow(d, i, depth + 1, row))\n }\n\n // If the column has an accessor, use it to get a value\n if (column.accessor) {\n row.values[column.id] = column.accessor(\n originalRow,\n rowIndex,\n row,\n parentRows,\n data\n )\n }\n\n // Allow plugins to manipulate the column value\n row.values[column.id] = reduceHooks(\n accessValueHooks,\n row.values[column.id],\n {\n row,\n column,\n instance: getInstance(),\n },\n true\n )\n }\n\n data.forEach((originalRow, rowIndex) =>\n accessRow(originalRow, rowIndex, 0, undefined, rows)\n )\n}\n","import React from 'react'\n\nimport { expandRows } from '../utils'\n\nimport {\n useGetLatest,\n actions,\n useMountedLayoutEffect,\n makePropGetter,\n ensurePluginOrder,\n} from '../publicUtils'\n\n// Actions\nactions.resetExpanded = 'resetExpanded'\nactions.toggleRowExpanded = 'toggleRowExpanded'\nactions.toggleAllRowsExpanded = 'toggleAllRowsExpanded'\n\nexport const useExpanded = hooks => {\n hooks.getToggleAllRowsExpandedProps = [defaultGetToggleAllRowsExpandedProps]\n hooks.getToggleRowExpandedProps = [defaultGetToggleRowExpandedProps]\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseExpanded.pluginName = 'useExpanded'\n\nconst defaultGetToggleAllRowsExpandedProps = (props, { instance }) => [\n props,\n {\n onClick: e => {\n instance.toggleAllRowsExpanded()\n },\n style: {\n cursor: 'pointer',\n },\n title: 'Toggle All Rows Expanded',\n },\n]\n\nconst defaultGetToggleRowExpandedProps = (props, { row }) => [\n props,\n {\n onClick: () => {\n row.toggleRowExpanded()\n },\n style: {\n cursor: 'pointer',\n },\n title: 'Toggle Row Expanded',\n },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n expanded: {},\n ...state,\n }\n }\n\n if (action.type === actions.resetExpanded) {\n return {\n ...state,\n expanded: instance.initialState.expanded || {},\n }\n }\n\n if (action.type === actions.toggleAllRowsExpanded) {\n const { value } = action\n const { rowsById } = instance\n\n const isAllRowsExpanded =\n Object.keys(rowsById).length === Object.keys(state.expanded).length\n\n const expandAll = typeof value !== 'undefined' ? value : !isAllRowsExpanded\n\n if (expandAll) {\n const expanded = {}\n\n Object.keys(rowsById).forEach(rowId => {\n expanded[rowId] = true\n })\n\n return {\n ...state,\n expanded,\n }\n }\n\n return {\n ...state,\n expanded: {},\n }\n }\n\n if (action.type === actions.toggleRowExpanded) {\n const { id, value: setExpanded } = action\n const exists = state.expanded[id]\n\n const shouldExist =\n typeof setExpanded !== 'undefined' ? setExpanded : !exists\n\n if (!exists && shouldExist) {\n return {\n ...state,\n expanded: {\n ...state.expanded,\n [id]: true,\n },\n }\n } else if (exists && !shouldExist) {\n const { [id]: _, ...rest } = state.expanded\n return {\n ...state,\n expanded: rest,\n }\n } else {\n return state\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n rowsById,\n manualExpandedKey = 'expanded',\n paginateExpandedRows = true,\n expandSubRows = true,\n autoResetExpanded = true,\n getHooks,\n plugins,\n state: { expanded },\n dispatch,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useSortBy', 'useGroupBy', 'usePivotColumns', 'useGlobalFilter'],\n 'useExpanded'\n )\n\n const getAutoResetExpanded = useGetLatest(autoResetExpanded)\n\n let isAllRowsExpanded = Boolean(\n Object.keys(rowsById).length && Object.keys(expanded).length\n )\n\n if (isAllRowsExpanded) {\n if (Object.keys(rowsById).some(id => !expanded[id])) {\n isAllRowsExpanded = false\n }\n }\n\n // Bypass any effects from firing when this changes\n useMountedLayoutEffect(() => {\n if (getAutoResetExpanded()) {\n dispatch({ type: actions.resetExpanded })\n }\n }, [dispatch, data])\n\n const toggleRowExpanded = React.useCallback(\n (id, value) => {\n dispatch({ type: actions.toggleRowExpanded, id, value })\n },\n [dispatch]\n )\n\n const toggleAllRowsExpanded = React.useCallback(\n value => dispatch({ type: actions.toggleAllRowsExpanded, value }),\n [dispatch]\n )\n\n const expandedRows = React.useMemo(() => {\n if (paginateExpandedRows) {\n return expandRows(rows, { manualExpandedKey, expanded, expandSubRows })\n }\n\n return rows\n }, [paginateExpandedRows, rows, manualExpandedKey, expanded, expandSubRows])\n\n const expandedDepth = React.useMemo(() => findExpandedDepth(expanded), [\n expanded,\n ])\n\n const getInstance = useGetLatest(instance)\n\n const getToggleAllRowsExpandedProps = makePropGetter(\n getHooks().getToggleAllRowsExpandedProps,\n { instance: getInstance() }\n )\n\n Object.assign(instance, {\n preExpandedRows: rows,\n expandedRows,\n rows: expandedRows,\n expandedDepth,\n isAllRowsExpanded,\n toggleRowExpanded,\n toggleAllRowsExpanded,\n getToggleAllRowsExpandedProps,\n })\n}\n\nfunction prepareRow(row, { instance: { getHooks }, instance }) {\n row.toggleRowExpanded = set => instance.toggleRowExpanded(row.id, set)\n\n row.getToggleRowExpandedProps = makePropGetter(\n getHooks().getToggleRowExpandedProps,\n {\n instance,\n row,\n }\n )\n}\n\nfunction findExpandedDepth(expanded) {\n let maxDepth = 0\n\n Object.keys(expanded).forEach(id => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n}\n","export const text = (rows, ids, filterValue) => {\n rows = rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return String(rowValue)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase())\n })\n })\n return rows\n}\n\ntext.autoRemove = val => !val\n\nexport const exactText = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue).toLowerCase() === String(filterValue).toLowerCase()\n : true\n })\n })\n}\n\nexactText.autoRemove = val => !val\n\nexport const exactTextCase = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue) === String(filterValue)\n : true\n })\n })\n}\n\nexactTextCase.autoRemove = val => !val\n\nexport const includes = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue.includes(filterValue)\n })\n })\n}\n\nincludes.autoRemove = val => !val || !val.length\n\nexport const includesAll = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.every(val => rowValue.includes(val))\n )\n })\n })\n}\n\nincludesAll.autoRemove = val => !val || !val.length\n\nexport const includesSome = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.some(val => rowValue.includes(val))\n )\n })\n })\n}\n\nincludesSome.autoRemove = val => !val || !val.length\n\nexport const includesValue = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return filterValue.includes(rowValue)\n })\n })\n}\n\nincludesValue.autoRemove = val => !val || !val.length\n\nexport const exact = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue === filterValue\n })\n })\n}\n\nexact.autoRemove = val => typeof val === 'undefined'\n\nexport const equals = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n // eslint-disable-next-line eqeqeq\n return rowValue == filterValue\n })\n })\n}\n\nequals.autoRemove = val => val == null\n\nexport const between = (rows, ids, filterValue) => {\n let [min, max] = filterValue || []\n\n min = typeof min === 'number' ? min : -Infinity\n max = typeof max === 'number' ? max : Infinity\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue >= min && rowValue <= max\n })\n })\n}\n\nbetween.autoRemove = val =>\n !val || (typeof val[0] !== 'number' && typeof val[1] !== 'number')\n","import React from 'react'\n\nimport {\n getFirstDefined,\n getFilterMethod,\n shouldAutoRemoveFilter,\n} from '../utils'\n\nimport {\n actions,\n useGetLatest,\n functionalUpdate,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetFilters = 'resetFilters'\nactions.setFilter = 'setFilter'\nactions.setAllFilters = 'setAllFilters'\n\nexport const useFilters = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nuseFilters.pluginName = 'useFilters'\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n filters: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetFilters) {\n return {\n ...state,\n filters: instance.initialState.filters || [],\n }\n }\n\n if (action.type === actions.setFilter) {\n const { columnId, filterValue } = action\n const { allColumns, filterTypes: userFilterTypes } = instance\n\n const column = allColumns.find(d => d.id === columnId)\n\n if (!column) {\n throw new Error(\n `React-Table: Could not find a column with id: ${columnId}`\n )\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n const previousfilter = state.filters.find(d => d.id === columnId)\n\n const newFilter = functionalUpdate(\n filterValue,\n previousfilter && previousfilter.value\n )\n\n //\n if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter, column)) {\n return {\n ...state,\n filters: state.filters.filter(d => d.id !== columnId),\n }\n }\n\n if (previousfilter) {\n return {\n ...state,\n filters: state.filters.map(d => {\n if (d.id === columnId) {\n return { id: columnId, value: newFilter }\n }\n return d\n }),\n }\n }\n\n return {\n ...state,\n filters: [...state.filters, { id: columnId, value: newFilter }],\n }\n }\n\n if (action.type === actions.setAllFilters) {\n const { filters } = action\n const { allColumns, filterTypes: userFilterTypes } = instance\n\n return {\n ...state,\n // Filter out undefined values\n filters: functionalUpdate(filters, state.filters).filter(filter => {\n const column = allColumns.find(d => d.id === filter.id)\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (\n shouldAutoRemoveFilter(filterMethod.autoRemove, filter.value, column)\n ) {\n return false\n }\n return true\n }),\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n rowsById,\n allColumns,\n filterTypes: userFilterTypes,\n manualFilters,\n defaultCanFilter = false,\n disableFilters,\n state: { filters },\n dispatch,\n autoResetFilters = true,\n } = instance\n\n const setFilter = React.useCallback(\n (columnId, filterValue) => {\n dispatch({ type: actions.setFilter, columnId, filterValue })\n },\n [dispatch]\n )\n\n const setAllFilters = React.useCallback(\n filters => {\n dispatch({\n type: actions.setAllFilters,\n filters,\n })\n },\n [dispatch]\n )\n\n allColumns.forEach(column => {\n const {\n id,\n accessor,\n defaultCanFilter: columnDefaultCanFilter,\n disableFilters: columnDisableFilters,\n } = column\n\n // Determine if a column is filterable\n column.canFilter = accessor\n ? getFirstDefined(\n columnDisableFilters === true ? false : undefined,\n disableFilters === true ? false : undefined,\n true\n )\n : getFirstDefined(columnDefaultCanFilter, defaultCanFilter, false)\n\n // Provide the column a way of updating the filter value\n column.setFilter = val => setFilter(column.id, val)\n\n // Provide the current filter value to the column for\n // convenience\n const found = filters.find(d => d.id === id)\n column.filterValue = found && found.value\n })\n\n const [\n filteredRows,\n filteredFlatRows,\n filteredRowsById,\n ] = React.useMemo(() => {\n if (manualFilters || !filters.length) {\n return [rows, flatRows, rowsById]\n }\n\n const filteredFlatRows = []\n const filteredRowsById = {}\n\n // Filters top level and nested rows\n const filterRows = (rows, depth = 0) => {\n let filteredRows = rows\n\n filteredRows = filters.reduce(\n (filteredSoFar, { id: columnId, value: filterValue }) => {\n // Find the filters column\n const column = allColumns.find(d => d.id === columnId)\n\n if (!column) {\n return filteredSoFar\n }\n\n if (depth === 0) {\n column.preFilteredRows = filteredSoFar\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (!filterMethod) {\n console.warn(\n `Could not find a valid 'column.filter' for column with the ID: ${column.id}.`\n )\n return filteredSoFar\n }\n\n // Pass the rows, id, filterValue and column to the filterMethod\n // to get the filtered rows back\n column.filteredRows = filterMethod(\n filteredSoFar,\n [columnId],\n filterValue\n )\n\n return column.filteredRows\n },\n rows\n )\n\n // Apply the filter to any subRows\n // We technically could do this recursively in the above loop,\n // but that would severely hinder the API for the user, since they\n // would be required to do that recursion in some scenarios\n filteredRows.forEach(row => {\n filteredFlatRows.push(row)\n filteredRowsById[row.id] = row\n if (!row.subRows) {\n return\n }\n\n row.subRows =\n row.subRows && row.subRows.length > 0\n ? filterRows(row.subRows, depth + 1)\n : row.subRows\n })\n\n return filteredRows\n }\n\n return [filterRows(rows), filteredFlatRows, filteredRowsById]\n }, [\n manualFilters,\n filters,\n rows,\n flatRows,\n rowsById,\n allColumns,\n userFilterTypes,\n ])\n\n React.useMemo(() => {\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = allColumns.filter(\n column => !filters.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n nonFilteredColumns.forEach(column => {\n column.preFilteredRows = filteredRows\n column.filteredRows = filteredRows\n })\n }, [filteredRows, filters, allColumns])\n\n const getAutoResetFilters = useGetLatest(autoResetFilters)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetFilters()) {\n dispatch({ type: actions.resetFilters })\n }\n }, [dispatch, manualFilters ? null : data])\n\n Object.assign(instance, {\n preFilteredRows: rows,\n preFilteredFlatRows: flatRows,\n preFilteredRowsById: rowsById,\n filteredRows,\n filteredFlatRows,\n filteredRowsById,\n rows: filteredRows,\n flatRows: filteredFlatRows,\n rowsById: filteredRowsById,\n setFilter,\n setAllFilters,\n })\n}\n","import React from 'react'\n\nimport {\n getFilterMethod,\n shouldAutoRemoveFilter,\n getFirstDefined,\n} from '../utils'\n\nimport {\n actions,\n useMountedLayoutEffect,\n functionalUpdate,\n useGetLatest,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetGlobalFilter = 'resetGlobalFilter'\nactions.setGlobalFilter = 'setGlobalFilter'\n\nexport const useGlobalFilter = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nuseGlobalFilter.pluginName = 'useGlobalFilter'\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.resetGlobalFilter) {\n return {\n ...state,\n globalFilter: instance.initialState.globalFilter || undefined,\n }\n }\n\n if (action.type === actions.setGlobalFilter) {\n const { filterValue } = action\n const { userFilterTypes } = instance\n\n const filterMethod = getFilterMethod(\n instance.globalFilter,\n userFilterTypes || {},\n filterTypes\n )\n\n const newFilter = functionalUpdate(filterValue, state.globalFilter)\n\n //\n if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter)) {\n const { globalFilter, ...stateWithoutGlobalFilter } = state\n return stateWithoutGlobalFilter\n }\n\n return {\n ...state,\n globalFilter: newFilter,\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n rowsById,\n allColumns,\n filterTypes: userFilterTypes,\n globalFilter,\n manualGlobalFilter,\n state: { globalFilter: globalFilterValue },\n dispatch,\n autoResetGlobalFilter = true,\n disableGlobalFilter,\n } = instance\n\n const setGlobalFilter = React.useCallback(\n filterValue => {\n dispatch({ type: actions.setGlobalFilter, filterValue })\n },\n [dispatch]\n )\n\n // TODO: Create a filter cache for incremental high speed multi-filtering\n // This gets pretty complicated pretty fast, since you have to maintain a\n // cache for each row group (top-level rows, and each row's recursive subrows)\n // This would make multi-filtering a lot faster though. Too far?\n\n const [\n globalFilteredRows,\n globalFilteredFlatRows,\n globalFilteredRowsById,\n ] = React.useMemo(() => {\n if (manualGlobalFilter || typeof globalFilterValue === 'undefined') {\n return [rows, flatRows, rowsById]\n }\n\n const filteredFlatRows = []\n const filteredRowsById = {}\n\n const filterMethod = getFilterMethod(\n globalFilter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (!filterMethod) {\n console.warn(`Could not find a valid 'globalFilter' option.`)\n return rows\n }\n\n allColumns.forEach(column => {\n const { disableGlobalFilter: columnDisableGlobalFilter } = column\n\n column.canFilter = getFirstDefined(\n columnDisableGlobalFilter === true ? false : undefined,\n disableGlobalFilter === true ? false : undefined,\n true\n )\n })\n\n const filterableColumns = allColumns.filter(c => c.canFilter === true)\n\n // Filters top level and nested rows\n const filterRows = filteredRows => {\n filteredRows = filterMethod(\n filteredRows,\n filterableColumns.map(d => d.id),\n globalFilterValue\n )\n\n filteredRows.forEach(row => {\n filteredFlatRows.push(row)\n filteredRowsById[row.id] = row\n\n row.subRows =\n row.subRows && row.subRows.length\n ? filterRows(row.subRows)\n : row.subRows\n })\n\n return filteredRows\n }\n\n return [filterRows(rows), filteredFlatRows, filteredRowsById]\n }, [\n manualGlobalFilter,\n globalFilterValue,\n globalFilter,\n userFilterTypes,\n allColumns,\n rows,\n flatRows,\n rowsById,\n disableGlobalFilter,\n ])\n\n const getAutoResetGlobalFilter = useGetLatest(autoResetGlobalFilter)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetGlobalFilter()) {\n dispatch({ type: actions.resetGlobalFilter })\n }\n }, [dispatch, manualGlobalFilter ? null : data])\n\n Object.assign(instance, {\n preGlobalFilteredRows: rows,\n preGlobalFilteredFlatRows: flatRows,\n preGlobalFilteredRowsById: rowsById,\n globalFilteredRows,\n globalFilteredFlatRows,\n globalFilteredRowsById,\n rows: globalFilteredRows,\n flatRows: globalFilteredFlatRows,\n rowsById: globalFilteredRowsById,\n setGlobalFilter,\n disableGlobalFilter,\n })\n}\n","export function sum(values, aggregatedValues) {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return aggregatedValues.reduce(\n (sum, next) => sum + (typeof next === 'number' ? next : 0),\n 0\n )\n}\n\nexport function min(values) {\n let min = values[0] || 0\n\n values.forEach(value => {\n if (typeof value === 'number') {\n min = Math.min(min, value)\n }\n })\n\n return min\n}\n\nexport function max(values) {\n let max = values[0] || 0\n\n values.forEach(value => {\n if (typeof value === 'number') {\n max = Math.max(max, value)\n }\n })\n\n return max\n}\n\nexport function minMax(values) {\n let min = values[0] || 0\n let max = values[0] || 0\n\n values.forEach(value => {\n if (typeof value === 'number') {\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\n })\n\n return `${min}..${max}`\n}\n\nexport function average(values) {\n return sum(null, values) / values.length\n}\n\nexport function median(values) {\n if (!values.length) {\n return null\n }\n\n const mid = Math.floor(values.length / 2)\n const nums = [...values].sort((a, b) => a - b)\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2\n}\n\nexport function unique(values) {\n return Array.from(new Set(values).values())\n}\n\nexport function uniqueCount(values) {\n return new Set(values).size\n}\n\nexport function count(values) {\n return values.length\n}\n","import React from 'react'\n\nimport * as aggregations from '../aggregations'\n\nimport { getFirstDefined, flattenBy } from '../utils'\n\nimport {\n actions,\n makePropGetter,\n ensurePluginOrder,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nconst emptyArray = []\nconst emptyObject = {}\n\n// Actions\nactions.resetGroupBy = 'resetGroupBy'\nactions.setGroupBy = 'setGroupBy'\nactions.toggleGroupBy = 'toggleGroupBy'\n\nexport const useGroupBy = hooks => {\n hooks.getGroupByToggleProps = [defaultGetGroupByToggleProps]\n hooks.stateReducers.push(reducer)\n hooks.visibleColumnsDeps.push((deps, { instance }) => [\n ...deps,\n instance.state.groupBy,\n ])\n hooks.visibleColumns.push(visibleColumns)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseGroupBy.pluginName = 'useGroupBy'\n\nconst defaultGetGroupByToggleProps = (props, { header }) => [\n props,\n {\n onClick: header.canGroupBy\n ? e => {\n e.persist()\n header.toggleGroupBy()\n }\n : undefined,\n style: {\n cursor: header.canGroupBy ? 'pointer' : undefined,\n },\n title: 'Toggle GroupBy',\n },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n groupBy: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetGroupBy) {\n return {\n ...state,\n groupBy: instance.initialState.groupBy || [],\n }\n }\n\n if (action.type === actions.setGroupBy) {\n const { value } = action\n return {\n ...state,\n groupBy: value,\n }\n }\n\n if (action.type === actions.toggleGroupBy) {\n const { columnId, value: setGroupBy } = action\n\n const resolvedGroupBy =\n typeof setGroupBy !== 'undefined'\n ? setGroupBy\n : !state.groupBy.includes(columnId)\n\n if (resolvedGroupBy) {\n return {\n ...state,\n groupBy: [...state.groupBy, columnId],\n }\n }\n\n return {\n ...state,\n groupBy: state.groupBy.filter(d => d !== columnId),\n }\n }\n}\n\nfunction visibleColumns(\n columns,\n {\n instance: {\n state: { groupBy },\n },\n }\n) {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n\n const groupByColumns = groupBy\n .map(g => columns.find(col => col.id === g))\n .filter(Boolean)\n\n const nonGroupByColumns = columns.filter(col => !groupBy.includes(col.id))\n\n columns = [...groupByColumns, ...nonGroupByColumns]\n\n columns.forEach(column => {\n column.isGrouped = groupBy.includes(column.id)\n column.groupedIndex = groupBy.indexOf(column.id)\n })\n\n return columns\n}\n\nconst defaultUserAggregations = {}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n rowsById,\n allColumns,\n flatHeaders,\n groupByFn = defaultGroupByFn,\n manualGroupBy,\n aggregations: userAggregations = defaultUserAggregations,\n plugins,\n state: { groupBy },\n dispatch,\n autoResetGroupBy = true,\n disableGroupBy,\n defaultCanGroupBy,\n getHooks,\n } = instance\n\n ensurePluginOrder(plugins, ['useColumnOrder', 'useFilters'], 'useGroupBy')\n\n const getInstance = useGetLatest(instance)\n\n allColumns.forEach(column => {\n const {\n accessor,\n defaultGroupBy: defaultColumnGroupBy,\n disableGroupBy: columnDisableGroupBy,\n } = column\n\n column.canGroupBy = accessor\n ? getFirstDefined(\n column.canGroupBy,\n columnDisableGroupBy === true ? false : undefined,\n disableGroupBy === true ? false : undefined,\n true\n )\n : getFirstDefined(\n column.canGroupBy,\n defaultColumnGroupBy,\n defaultCanGroupBy,\n false\n )\n\n if (column.canGroupBy) {\n column.toggleGroupBy = () => instance.toggleGroupBy(column.id)\n }\n\n column.Aggregated = column.Aggregated || column.Cell\n })\n\n const toggleGroupBy = React.useCallback(\n (columnId, value) => {\n dispatch({ type: actions.toggleGroupBy, columnId, value })\n },\n [dispatch]\n )\n\n const setGroupBy = React.useCallback(\n value => {\n dispatch({ type: actions.setGroupBy, value })\n },\n [dispatch]\n )\n\n flatHeaders.forEach(header => {\n header.getGroupByToggleProps = makePropGetter(\n getHooks().getGroupByToggleProps,\n { instance: getInstance(), header }\n )\n })\n\n const [\n groupedRows,\n groupedFlatRows,\n groupedRowsById,\n onlyGroupedFlatRows,\n onlyGroupedRowsById,\n nonGroupedFlatRows,\n nonGroupedRowsById,\n ] = React.useMemo(() => {\n if (manualGroupBy || !groupBy.length) {\n return [\n rows,\n flatRows,\n rowsById,\n emptyArray,\n emptyObject,\n flatRows,\n rowsById,\n ]\n }\n\n // Ensure that the list of filtered columns exist\n const existingGroupBy = groupBy.filter(g =>\n allColumns.find(col => col.id === g)\n )\n\n // Find the columns that can or are aggregating\n // Uses each column to aggregate rows into a single value\n const aggregateRowsToValues = (leafRows, groupedRows, depth) => {\n const values = {}\n\n allColumns.forEach(column => {\n // Don't aggregate columns that are in the groupBy\n if (existingGroupBy.includes(column.id)) {\n values[column.id] = groupedRows[0]\n ? groupedRows[0].values[column.id]\n : null\n return\n }\n\n // Aggregate the values\n let aggregateFn =\n typeof column.aggregate === 'function'\n ? column.aggregate\n : userAggregations[column.aggregate] ||\n aggregations[column.aggregate]\n\n if (aggregateFn) {\n // Get the columnValues to aggregate\n const groupedValues = groupedRows.map(row => row.values[column.id])\n\n // Get the columnValues to aggregate\n const leafValues = leafRows.map(row => {\n let columnValue = row.values[column.id]\n\n if (!depth && column.aggregateValue) {\n const aggregateValueFn =\n typeof column.aggregateValue === 'function'\n ? column.aggregateValue\n : userAggregations[column.aggregateValue] ||\n aggregations[column.aggregateValue]\n\n if (!aggregateValueFn) {\n console.info({ column })\n throw new Error(\n `React Table: Invalid column.aggregateValue option for column listed above`\n )\n }\n\n columnValue = aggregateValueFn(columnValue, row, column)\n }\n return columnValue\n })\n\n values[column.id] = aggregateFn(leafValues, groupedValues)\n } else if (column.aggregate) {\n console.info({ column })\n throw new Error(\n `React Table: Invalid column.aggregate option for column listed above`\n )\n } else {\n values[column.id] = null\n }\n })\n\n return values\n }\n\n let groupedFlatRows = []\n const groupedRowsById = {}\n const onlyGroupedFlatRows = []\n const onlyGroupedRowsById = {}\n const nonGroupedFlatRows = []\n const nonGroupedRowsById = {}\n\n // Recursively group the data\n const groupUpRecursively = (rows, depth = 0, parentId) => {\n // This is the last level, just return the rows\n if (depth === existingGroupBy.length) {\n return rows.map((row) => ({ ...row, depth }))\n }\n\n const columnId = existingGroupBy[depth]\n\n // Group the rows together for this level\n let rowGroupsMap = groupByFn(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Object.entries(rowGroupsMap).map(\n ([groupByVal, groupedRows], index) => {\n let id = `${columnId}:${groupByVal}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, 'leafRows')\n : groupedRows\n\n const values = aggregateRowsToValues(leafRows, groupedRows, depth)\n\n const row = {\n id,\n isGrouped: true,\n groupByID: columnId,\n groupByVal,\n values,\n subRows,\n leafRows,\n depth,\n index,\n }\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n if (subRow.isGrouped) {\n onlyGroupedFlatRows.push(subRow)\n onlyGroupedRowsById[subRow.id] = subRow\n } else {\n nonGroupedFlatRows.push(subRow)\n nonGroupedRowsById[subRow.id] = subRow\n }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rows)\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n if (subRow.isGrouped) {\n onlyGroupedFlatRows.push(subRow)\n onlyGroupedRowsById[subRow.id] = subRow\n } else {\n nonGroupedFlatRows.push(subRow)\n nonGroupedRowsById[subRow.id] = subRow\n }\n })\n\n // Assign the new data\n return [\n groupedRows,\n groupedFlatRows,\n groupedRowsById,\n onlyGroupedFlatRows,\n onlyGroupedRowsById,\n nonGroupedFlatRows,\n nonGroupedRowsById,\n ]\n }, [\n manualGroupBy,\n groupBy,\n rows,\n flatRows,\n rowsById,\n allColumns,\n userAggregations,\n groupByFn,\n ])\n\n const getAutoResetGroupBy = useGetLatest(autoResetGroupBy)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetGroupBy()) {\n dispatch({ type: actions.resetGroupBy })\n }\n }, [dispatch, manualGroupBy ? null : data])\n\n Object.assign(instance, {\n preGroupedRows: rows,\n preGroupedFlatRow: flatRows,\n preGroupedRowsById: rowsById,\n groupedRows,\n groupedFlatRows,\n groupedRowsById,\n onlyGroupedFlatRows,\n onlyGroupedRowsById,\n nonGroupedFlatRows,\n nonGroupedRowsById,\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n toggleGroupBy,\n setGroupBy,\n })\n}\n\nfunction prepareRow(row) {\n row.allCells.forEach(cell => {\n // Grouped cells are in the groupBy and the pivot cell for the row\n cell.isGrouped = cell.column.isGrouped && cell.column.id === row.groupByID\n // Placeholder cells are any columns in the groupBy that are not grouped\n cell.isPlaceholder = !cell.isGrouped && cell.column.isGrouped\n // Aggregated cells are not grouped, not repeated, but still have subRows\n cell.isAggregated =\n !cell.isGrouped && !cell.isPlaceholder && row.subRows?.length\n })\n}\n\nexport function defaultGroupByFn(rows, columnId) {\n return rows.reduce((prev, row, i) => {\n // TODO: Might want to implement a key serializer here so\n // irregular column values can still be grouped if needed?\n const resKey = `${row.values[columnId]}`\n prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : []\n prev[resKey].push(row)\n return prev\n }, {})\n}\n","const reSplitAlphaNumeric = /([0-9]+)/gm\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nexport const alphanumeric = (rowA, rowB, columnId) => {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n // Force to strings (or \"\" for unsupported types)\n a = toString(a)\n b = toString(b)\n\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n a = a.split(reSplitAlphaNumeric).filter(Boolean)\n b = b.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n let aa = a.shift()\n let bb = b.shift()\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\nexport function datetime(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n a = a.getTime()\n b = b.getTime()\n\n return compareBasic(a, b)\n}\n\nexport function basic(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n return compareBasic(a, b)\n}\n\nexport function string(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n a = a.split('').filter(Boolean)\n b = b.split('').filter(Boolean)\n\n while (a.length && b.length) {\n let aa = a.shift()\n let bb = b.shift()\n\n let alower = aa.toLowerCase()\n let blower = bb.toLowerCase()\n\n // Case insensitive comparison until characters match\n if (alower > blower) {\n return 1\n }\n if (blower > alower) {\n return -1\n }\n // If lowercase characters are identical\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n return a.length - b.length\n}\n\nexport function number(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n const replaceNonNumeric = /[^0-9.]/gi\n\n a = Number(String(a).replace(replaceNonNumeric, ''))\n b = Number(String(b).replace(replaceNonNumeric, ''))\n\n return compareBasic(a, b)\n}\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction getRowValuesByColumnID(row1, row2, columnId) {\n return [row1.values[columnId], row2.values[columnId]]\n}\n\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n","import React from 'react'\n\nimport {\n actions,\n ensurePluginOrder,\n defaultColumn,\n makePropGetter,\n useGetLatest,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, isFunction } from '../utils'\n\nimport * as sortTypes from '../sortTypes'\n\n// Actions\nactions.resetSortBy = 'resetSortBy'\nactions.setSortBy = 'setSortBy'\nactions.toggleSortBy = 'toggleSortBy'\nactions.clearSortBy = 'clearSortBy'\n\ndefaultColumn.sortType = 'alphanumeric'\ndefaultColumn.sortDescFirst = false\n\nexport const useSortBy = hooks => {\n hooks.getSortByToggleProps = [defaultGetSortByToggleProps]\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nuseSortBy.pluginName = 'useSortBy'\n\nconst defaultGetSortByToggleProps = (props, { instance, column }) => {\n const { isMultiSortEvent = e => e.shiftKey } = instance\n\n return [\n props,\n {\n onClick: column.canSort\n ? e => {\n e.persist()\n column.toggleSortBy(\n undefined,\n !instance.disableMultiSort && isMultiSortEvent(e)\n )\n }\n : undefined,\n style: {\n cursor: column.canSort ? 'pointer' : undefined,\n },\n title: column.canSort ? 'Toggle SortBy' : undefined,\n },\n ]\n}\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n sortBy: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetSortBy) {\n return {\n ...state,\n sortBy: instance.initialState.sortBy || [],\n }\n }\n\n if (action.type === actions.clearSortBy) {\n const { sortBy } = state\n const newSortBy = sortBy.filter(d => d.id !== action.columnId)\n\n return {\n ...state,\n sortBy: newSortBy,\n }\n }\n\n if (action.type === actions.setSortBy) {\n const { sortBy } = action\n return {\n ...state,\n sortBy,\n }\n }\n\n if (action.type === actions.toggleSortBy) {\n const { columnId, desc, multi } = action\n\n const {\n allColumns,\n disableMultiSort,\n disableSortRemove,\n disableMultiRemove,\n maxMultiSortColCount = Number.MAX_SAFE_INTEGER,\n } = instance\n\n const { sortBy } = state\n\n // Find the column for this columnId\n const column = allColumns.find(d => d.id === columnId)\n const { sortDescFirst } = column\n\n // Find any existing sortBy for this column\n const existingSortBy = sortBy.find(d => d.id === columnId)\n const existingIndex = sortBy.findIndex(d => d.id === columnId)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSortBy = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (!disableMultiSort && multi) {\n if (existingSortBy) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (existingIndex !== sortBy.length - 1 || sortBy.length !== 1) {\n sortAction = 'replace'\n } else if (existingSortBy) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sortBy\n if (\n sortAction === 'toggle' && // Must be toggling\n !disableSortRemove && // If disableSortRemove, disable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? !disableMultiRemove : true) && // If multi, don't allow if disableMultiRemove\n ((existingSortBy && // Finally, detect if it should indeed be removed\n existingSortBy.desc &&\n !sortDescFirst) ||\n (!existingSortBy.desc && sortDescFirst))\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSortBy = [\n {\n id: columnId,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n } else if (sortAction === 'add') {\n newSortBy = [\n ...sortBy,\n {\n id: columnId,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n // Take latest n columns\n newSortBy.splice(0, newSortBy.length - maxMultiSortColCount)\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSortBy = sortBy.map(d => {\n if (d.id === columnId) {\n return {\n ...d,\n desc: hasDescDefined ? desc : !existingSortBy.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSortBy = sortBy.filter(d => d.id !== columnId)\n }\n\n return {\n ...state,\n sortBy: newSortBy,\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n allColumns,\n orderByFn = defaultOrderByFn,\n sortTypes: userSortTypes,\n manualSortBy,\n defaultCanSort,\n disableSortBy,\n flatHeaders,\n state: { sortBy },\n dispatch,\n plugins,\n getHooks,\n autoResetSortBy = true,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGlobalFilter', 'useGroupBy', 'usePivotColumns'],\n 'useSortBy'\n )\n\n const setSortBy = React.useCallback(\n sortBy => {\n dispatch({ type: actions.setSortBy, sortBy })\n },\n [dispatch]\n )\n\n // Updates sorting based on a columnId, desc flag and multi flag\n const toggleSortBy = React.useCallback(\n (columnId, desc, multi) => {\n dispatch({ type: actions.toggleSortBy, columnId, desc, multi })\n },\n [dispatch]\n )\n\n // use reference to avoid memory leak in #1608\n const getInstance = useGetLatest(instance)\n\n // Add the getSortByToggleProps method to columns and headers\n flatHeaders.forEach(column => {\n const {\n accessor,\n canSort: defaultColumnCanSort,\n disableSortBy: columnDisableSortBy,\n id,\n } = column\n\n const canSort = accessor\n ? getFirstDefined(\n columnDisableSortBy === true ? false : undefined,\n disableSortBy === true ? false : undefined,\n true\n )\n : getFirstDefined(defaultCanSort, defaultColumnCanSort, false)\n\n column.canSort = canSort\n\n if (column.canSort) {\n column.toggleSortBy = (desc, multi) =>\n toggleSortBy(column.id, desc, multi)\n\n column.clearSortBy = () => {\n dispatch({ type: actions.clearSortBy, columnId: column.id })\n }\n }\n\n column.getSortByToggleProps = makePropGetter(\n getHooks().getSortByToggleProps,\n {\n instance: getInstance(),\n column,\n }\n )\n\n const columnSort = sortBy.find(d => d.id === id)\n column.isSorted = !!columnSort\n column.sortedIndex = sortBy.findIndex(d => d.id === id)\n column.isSortedDesc = column.isSorted ? columnSort.desc : undefined\n })\n\n const [sortedRows, sortedFlatRows] = React.useMemo(() => {\n if (manualSortBy || !sortBy.length) {\n return [rows, flatRows]\n }\n\n const sortedFlatRows = []\n\n // Filter out sortBys that correspond to non existing columns\n const availableSortBy = sortBy.filter(sort =>\n allColumns.find(col => col.id === sort.id)\n )\n\n const sortData = rows => {\n // Use the orderByFn to compose multiple sortBy's together.\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = orderByFn(\n rows,\n availableSortBy.map(sort => {\n // Support custom sorting methods for each column\n const column = allColumns.find(d => d.id === sort.id)\n\n if (!column) {\n throw new Error(\n `React-Table: Could not find a column with id: ${sort.id} while sorting`\n )\n }\n\n const { sortType } = column\n\n // Look up sortBy functions in this order:\n // column function\n // column string lookup on user sortType\n // column string lookup on built-in sortType\n // default function\n // default string lookup on user sortType\n // default string lookup on built-in sortType\n const sortMethod =\n isFunction(sortType) ||\n (userSortTypes || {})[sortType] ||\n sortTypes[sortType]\n\n if (!sortMethod) {\n throw new Error(\n `React-Table: Could not find a valid sortType of '${sortType}' for column '${sort.id}'.`\n )\n }\n\n // Return the correct sortFn.\n // This function should always return in ascending order\n return (a, b) => sortMethod(a, b, sort.id, sort.desc)\n }),\n // Map the directions\n availableSortBy.map(sort => {\n // Detect and use the sortInverted option\n const column = allColumns.find(d => d.id === sort.id)\n\n if (column && column.sortInverted) {\n return sort.desc\n }\n\n return !sort.desc\n })\n )\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (!row.subRows || row.subRows.length === 0) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n return [sortData(rows), sortedFlatRows]\n }, [\n manualSortBy,\n sortBy,\n rows,\n flatRows,\n allColumns,\n orderByFn,\n userSortTypes,\n ])\n\n const getAutoResetSortBy = useGetLatest(autoResetSortBy)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetSortBy()) {\n dispatch({ type: actions.resetSortBy })\n }\n }, [manualSortBy ? null : data])\n\n Object.assign(instance, {\n preSortedRows: rows,\n preSortedFlatRows: flatRows,\n sortedRows,\n sortedFlatRows,\n rows: sortedRows,\n flatRows: sortedFlatRows,\n setSortBy,\n toggleSortBy,\n })\n}\n\nexport function defaultOrderByFn(arr, funcs, dirs) {\n return [...arr].sort((rowA, rowB) => {\n for (let i = 0; i < funcs.length; i += 1) {\n const sortFn = funcs[i]\n const desc = dirs[i] === false || dirs[i] === 'desc'\n const sortInt = sortFn(rowA, rowB)\n if (sortInt !== 0) {\n return desc ? -sortInt : sortInt\n }\n }\n return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index\n })\n}\n","import React from 'react'\n\n//\n\nimport {\n actions,\n ensurePluginOrder,\n functionalUpdate,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nimport { expandRows } from '../utils'\n\nconst pluginName = 'usePagination'\n\n// Actions\nactions.resetPage = 'resetPage'\nactions.gotoPage = 'gotoPage'\nactions.setPageSize = 'setPageSize'\n\nexport const usePagination = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nusePagination.pluginName = pluginName\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n pageSize: 10,\n pageIndex: 0,\n ...state,\n }\n }\n\n if (action.type === actions.resetPage) {\n return {\n ...state,\n pageIndex: instance.initialState.pageIndex || 0,\n }\n }\n\n if (action.type === actions.gotoPage) {\n const { pageCount, page } = instance\n const newPageIndex = functionalUpdate(action.pageIndex, state.pageIndex)\n let canNavigate = false\n\n if (newPageIndex > state.pageIndex) {\n // next page\n canNavigate =\n pageCount === -1\n ? page.length >= state.pageSize\n : newPageIndex < pageCount\n } else if (newPageIndex < state.pageIndex) {\n // prev page\n canNavigate = newPageIndex > -1\n }\n\n if (!canNavigate) {\n return state\n }\n\n return {\n ...state,\n pageIndex: newPageIndex,\n }\n }\n\n if (action.type === actions.setPageSize) {\n const { pageSize } = action\n const topRowIndex = state.pageSize * state.pageIndex\n const pageIndex = Math.floor(topRowIndex / pageSize)\n\n return {\n ...state,\n pageIndex,\n pageSize,\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n rows,\n autoResetPage = true,\n manualExpandedKey = 'expanded',\n plugins,\n pageCount: userPageCount,\n paginateExpandedRows = true,\n expandSubRows = true,\n state: {\n pageSize,\n pageIndex,\n expanded,\n globalFilter,\n filters,\n groupBy,\n sortBy,\n },\n dispatch,\n data,\n manualPagination,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useGlobalFilter', 'useFilters', 'useGroupBy', 'useSortBy', 'useExpanded'],\n 'usePagination'\n )\n\n const getAutoResetPage = useGetLatest(autoResetPage)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetPage()) {\n dispatch({ type: actions.resetPage })\n }\n }, [\n dispatch,\n manualPagination ? null : data,\n globalFilter,\n filters,\n groupBy,\n sortBy,\n ])\n\n const pageCount = manualPagination\n ? userPageCount\n : Math.ceil(rows.length / pageSize)\n\n const pageOptions = React.useMemo(\n () =>\n pageCount > 0\n ? [...new Array(pageCount)].fill(null).map((d, i) => i)\n : [],\n [pageCount]\n )\n\n const page = React.useMemo(() => {\n let page\n\n if (manualPagination) {\n page = rows\n } else {\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n page = rows.slice(pageStart, pageEnd)\n }\n\n if (paginateExpandedRows) {\n return page\n }\n\n return expandRows(page, { manualExpandedKey, expanded, expandSubRows })\n }, [\n expandSubRows,\n expanded,\n manualExpandedKey,\n manualPagination,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n rows,\n ])\n\n const canPreviousPage = pageIndex > 0\n const canNextPage =\n pageCount === -1 ? page.length >= pageSize : pageIndex < pageCount - 1\n\n const gotoPage = React.useCallback(\n pageIndex => {\n dispatch({ type: actions.gotoPage, pageIndex })\n },\n [dispatch]\n )\n\n const previousPage = React.useCallback(() => {\n return gotoPage(old => old - 1)\n }, [gotoPage])\n\n const nextPage = React.useCallback(() => {\n return gotoPage(old => old + 1)\n }, [gotoPage])\n\n const setPageSize = React.useCallback(\n pageSize => {\n dispatch({ type: actions.setPageSize, pageSize })\n },\n [dispatch]\n )\n\n Object.assign(instance, {\n pageOptions,\n pageCount,\n page,\n canPreviousPage,\n canNextPage,\n gotoPage,\n previousPage,\n nextPage,\n setPageSize,\n })\n}\n","/* istanbul ignore file */\n\nimport {\n actions,\n makePropGetter,\n ensurePluginOrder,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nimport { flattenColumns, getFirstDefined } from '../utils'\n\n// Actions\nactions.resetPivot = 'resetPivot'\nactions.togglePivot = 'togglePivot'\n\nexport const _UNSTABLE_usePivotColumns = hooks => {\n hooks.getPivotToggleProps = [defaultGetPivotToggleProps]\n hooks.stateReducers.push(reducer)\n hooks.useInstanceAfterData.push(useInstanceAfterData)\n hooks.allColumns.push(allColumns)\n hooks.accessValue.push(accessValue)\n hooks.materializedColumns.push(materializedColumns)\n hooks.materializedColumnsDeps.push(materializedColumnsDeps)\n hooks.visibleColumns.push(visibleColumns)\n hooks.visibleColumnsDeps.push(visibleColumnsDeps)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\n_UNSTABLE_usePivotColumns.pluginName = 'usePivotColumns'\n\nconst defaultPivotColumns = []\n\nconst defaultGetPivotToggleProps = (props, { header }) => [\n props,\n {\n onClick: header.canPivot\n ? e => {\n e.persist()\n header.togglePivot()\n }\n : undefined,\n style: {\n cursor: header.canPivot ? 'pointer' : undefined,\n },\n title: 'Toggle Pivot',\n },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n pivotColumns: defaultPivotColumns,\n ...state,\n }\n }\n\n if (action.type === actions.resetPivot) {\n return {\n ...state,\n pivotColumns: instance.initialState.pivotColumns || defaultPivotColumns,\n }\n }\n\n if (action.type === actions.togglePivot) {\n const { columnId, value: setPivot } = action\n\n const resolvedPivot =\n typeof setPivot !== 'undefined'\n ? setPivot\n : !state.pivotColumns.includes(columnId)\n\n if (resolvedPivot) {\n return {\n ...state,\n pivotColumns: [...state.pivotColumns, columnId],\n }\n }\n\n return {\n ...state,\n pivotColumns: state.pivotColumns.filter(d => d !== columnId),\n }\n }\n}\n\nfunction useInstanceAfterData(instance) {\n instance.allColumns.forEach(column => {\n column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n })\n}\n\nfunction allColumns(columns, { instance }) {\n columns.forEach(column => {\n column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n column.uniqueValues = new Set()\n })\n return columns\n}\n\nfunction accessValue(value, { column }) {\n if (column.uniqueValues && typeof value !== 'undefined') {\n column.uniqueValues.add(value)\n }\n return value\n}\n\nfunction materializedColumns(materialized, { instance }) {\n const { allColumns, state } = instance\n\n if (!state.pivotColumns.length || !state.groupBy || !state.groupBy.length) {\n return materialized\n }\n\n const pivotColumns = state.pivotColumns\n .map(id => allColumns.find(d => d.id === id))\n .filter(Boolean)\n\n const sourceColumns = allColumns.filter(\n d =>\n !d.isPivotSource &&\n !state.groupBy.includes(d.id) &&\n !state.pivotColumns.includes(d.id)\n )\n\n const buildPivotColumns = (depth = 0, parent, pivotFilters = []) => {\n const pivotColumn = pivotColumns[depth]\n\n if (!pivotColumn) {\n return sourceColumns.map(sourceColumn => {\n // TODO: We could offer support here for renesting pivoted\n // columns inside copies of their header groups. For now,\n // that seems like it would be (1) overkill on nesting, considering\n // you already get nesting for every pivot level and (2)\n // really hard. :)\n\n return {\n ...sourceColumn,\n canPivot: false,\n isPivoted: true,\n parent,\n depth: depth,\n id: `${parent ? `${parent.id}.${sourceColumn.id}` : sourceColumn.id}`,\n accessor: (originalRow, i, row) => {\n if (pivotFilters.every(filter => filter(row))) {\n return row.values[sourceColumn.id]\n }\n },\n }\n })\n }\n\n const uniqueValues = Array.from(pivotColumn.uniqueValues).sort()\n\n return uniqueValues.map(uniqueValue => {\n const columnGroup = {\n ...pivotColumn,\n Header:\n pivotColumn.PivotHeader || typeof pivotColumn.header === 'string'\n ? `${pivotColumn.Header}: ${uniqueValue}`\n : uniqueValue,\n isPivotGroup: true,\n parent,\n depth,\n id: parent\n ? `${parent.id}.${pivotColumn.id}.${uniqueValue}`\n : `${pivotColumn.id}.${uniqueValue}`,\n pivotValue: uniqueValue,\n }\n\n columnGroup.columns = buildPivotColumns(depth + 1, columnGroup, [\n ...pivotFilters,\n row => row.values[pivotColumn.id] === uniqueValue,\n ])\n\n return columnGroup\n })\n }\n\n const newMaterialized = flattenColumns(buildPivotColumns())\n\n return [...materialized, ...newMaterialized]\n}\n\nfunction materializedColumnsDeps(\n deps,\n {\n instance: {\n state: { pivotColumns, groupBy },\n },\n }\n) {\n return [...deps, pivotColumns, groupBy]\n}\n\nfunction visibleColumns(visibleColumns, { instance: { state } }) {\n visibleColumns = visibleColumns.filter(d => !d.isPivotSource)\n\n if (state.pivotColumns.length && state.groupBy && state.groupBy.length) {\n visibleColumns = visibleColumns.filter(\n column => column.isGrouped || column.isPivoted\n )\n }\n\n return visibleColumns\n}\n\nfunction visibleColumnsDeps(deps, { instance }) {\n return [...deps, instance.state.pivotColumns, instance.state.groupBy]\n}\n\nfunction useInstance(instance) {\n const {\n columns,\n allColumns,\n flatHeaders,\n // pivotFn = defaultPivotFn,\n // manualPivot,\n getHooks,\n plugins,\n dispatch,\n autoResetPivot = true,\n manaulPivot,\n disablePivot,\n defaultCanPivot,\n } = instance\n\n ensurePluginOrder(plugins, ['useGroupBy'], 'usePivotColumns')\n\n const getInstance = useGetLatest(instance)\n\n allColumns.forEach(column => {\n const {\n accessor,\n defaultPivot: defaultColumnPivot,\n disablePivot: columnDisablePivot,\n } = column\n\n column.canPivot = accessor\n ? getFirstDefined(\n column.canPivot,\n columnDisablePivot === true ? false : undefined,\n disablePivot === true ? false : undefined,\n true\n )\n : getFirstDefined(\n column.canPivot,\n defaultColumnPivot,\n defaultCanPivot,\n false\n )\n\n if (column.canPivot) {\n column.togglePivot = () => instance.togglePivot(column.id)\n }\n\n column.Aggregated = column.Aggregated || column.Cell\n })\n\n const togglePivot = (columnId, value) => {\n dispatch({ type: actions.togglePivot, columnId, value })\n }\n\n flatHeaders.forEach(header => {\n header.getPivotToggleProps = makePropGetter(\n getHooks().getPivotToggleProps,\n {\n instance: getInstance(),\n header,\n }\n )\n })\n\n const getAutoResetPivot = useGetLatest(autoResetPivot)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetPivot()) {\n dispatch({ type: actions.resetPivot })\n }\n }, [dispatch, manaulPivot ? null : columns])\n\n Object.assign(instance, {\n togglePivot,\n })\n}\n\nfunction prepareRow(row) {\n row.allCells.forEach(cell => {\n // Grouped cells are in the pivotColumns and the pivot cell for the row\n cell.isPivoted = cell.column.isPivoted\n })\n}\n","import React from 'react'\n\nimport {\n actions,\n makePropGetter,\n ensurePluginOrder,\n useGetLatest,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nconst pluginName = 'useRowSelect'\n\n// Actions\nactions.resetSelectedRows = 'resetSelectedRows'\nactions.toggleAllRowsSelected = 'toggleAllRowsSelected'\nactions.toggleRowSelected = 'toggleRowSelected'\nactions.toggleAllPageRowsSelected = 'toggleAllPageRowsSelected'\n\nexport const useRowSelect = hooks => {\n hooks.getToggleRowSelectedProps = [defaultGetToggleRowSelectedProps]\n hooks.getToggleAllRowsSelectedProps = [defaultGetToggleAllRowsSelectedProps]\n hooks.getToggleAllPageRowsSelectedProps = [\n defaultGetToggleAllPageRowsSelectedProps,\n ]\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseRowSelect.pluginName = pluginName\n\nconst defaultGetToggleRowSelectedProps = (props, { instance, row }) => {\n const { manualRowSelectedKey = 'isSelected' } = instance\n let checked = false\n\n if (row.original && row.original[manualRowSelectedKey]) {\n checked = true\n } else {\n checked = row.isSelected\n }\n\n return [\n props,\n {\n onChange: e => {\n row.toggleRowSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked,\n title: 'Toggle Row Selected',\n indeterminate: row.isSomeSelected,\n },\n ]\n}\n\nconst defaultGetToggleAllRowsSelectedProps = (props, { instance }) => [\n props,\n {\n onChange: e => {\n instance.toggleAllRowsSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: instance.isAllRowsSelected,\n title: 'Toggle All Rows Selected',\n indeterminate: Boolean(\n !instance.isAllRowsSelected &&\n Object.keys(instance.state.selectedRowIds).length\n ),\n },\n]\n\nconst defaultGetToggleAllPageRowsSelectedProps = (props, { instance }) => [\n props,\n {\n onChange(e) {\n instance.toggleAllPageRowsSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: instance.isAllPageRowsSelected,\n title: 'Toggle All Current Page Rows Selected',\n indeterminate: Boolean(\n !instance.isAllPageRowsSelected &&\n instance.page.some(({ id }) => instance.state.selectedRowIds[id])\n ),\n },\n]\n\n// eslint-disable-next-line max-params\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n selectedRowIds: {},\n ...state,\n }\n }\n\n if (action.type === actions.resetSelectedRows) {\n return {\n ...state,\n selectedRowIds: instance.initialState.selectedRowIds || {},\n }\n }\n\n if (action.type === actions.toggleAllRowsSelected) {\n const { value: setSelected } = action\n const {\n isAllRowsSelected,\n rowsById,\n nonGroupedRowsById = rowsById,\n } = instance\n\n const selectAll =\n typeof setSelected !== 'undefined' ? setSelected : !isAllRowsSelected\n\n // Only remove/add the rows that are visible on the screen\n // Leave all the other rows that are selected alone.\n const selectedRowIds = Object.assign({}, state.selectedRowIds)\n\n if (selectAll) {\n Object.keys(nonGroupedRowsById).forEach(rowId => {\n selectedRowIds[rowId] = true\n })\n } else {\n Object.keys(nonGroupedRowsById).forEach(rowId => {\n delete selectedRowIds[rowId]\n })\n }\n\n return {\n ...state,\n selectedRowIds,\n }\n }\n\n if (action.type === actions.toggleRowSelected) {\n const { id, value: setSelected } = action\n const { rowsById, selectSubRows = true, getSubRows } = instance\n const isSelected = state.selectedRowIds[id]\n const shouldExist =\n typeof setSelected !== 'undefined' ? setSelected : !isSelected\n\n if (isSelected === shouldExist) {\n return state\n }\n\n const newSelectedRowIds = { ...state.selectedRowIds }\n\n const handleRowById = id => {\n const row = rowsById[id]\n\n if (row) {\n if (!row.isGrouped) {\n if (shouldExist) {\n newSelectedRowIds[id] = true\n } else {\n delete newSelectedRowIds[id]\n }\n }\n\n if (selectSubRows && getSubRows(row)) {\n return getSubRows(row).forEach(row => handleRowById(row.id))\n }\n }\n }\n\n handleRowById(id)\n\n return {\n ...state,\n selectedRowIds: newSelectedRowIds,\n }\n }\n\n if (action.type === actions.toggleAllPageRowsSelected) {\n const { value: setSelected } = action\n const {\n page,\n rowsById,\n selectSubRows = true,\n isAllPageRowsSelected,\n getSubRows,\n } = instance\n\n const selectAll =\n typeof setSelected !== 'undefined' ? setSelected : !isAllPageRowsSelected\n\n const newSelectedRowIds = { ...state.selectedRowIds }\n\n const handleRowById = id => {\n const row = rowsById[id]\n\n if (!row.isGrouped) {\n if (selectAll) {\n newSelectedRowIds[id] = true\n } else {\n delete newSelectedRowIds[id]\n }\n }\n\n if (selectSubRows && getSubRows(row)) {\n return getSubRows(row).forEach(row => handleRowById(row.id))\n }\n }\n\n page.forEach(row => handleRowById(row.id))\n\n return {\n ...state,\n selectedRowIds: newSelectedRowIds,\n }\n }\n return state\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n getHooks,\n plugins,\n rowsById,\n nonGroupedRowsById = rowsById,\n autoResetSelectedRows = true,\n state: { selectedRowIds },\n selectSubRows = true,\n dispatch,\n page,\n getSubRows,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded', 'usePagination'],\n 'useRowSelect'\n )\n\n const selectedFlatRows = React.useMemo(() => {\n const selectedFlatRows = []\n\n rows.forEach(row => {\n const isSelected = selectSubRows\n ? getRowIsSelected(row, selectedRowIds, getSubRows)\n : !!selectedRowIds[row.id]\n row.isSelected = !!isSelected\n row.isSomeSelected = isSelected === null\n\n if (isSelected) {\n selectedFlatRows.push(row)\n }\n })\n\n return selectedFlatRows\n }, [rows, selectSubRows, selectedRowIds, getSubRows])\n\n let isAllRowsSelected = Boolean(\n Object.keys(nonGroupedRowsById).length && Object.keys(selectedRowIds).length\n )\n\n let isAllPageRowsSelected = isAllRowsSelected\n\n if (isAllRowsSelected) {\n if (Object.keys(nonGroupedRowsById).some(id => !selectedRowIds[id])) {\n isAllRowsSelected = false\n }\n }\n\n if (!isAllRowsSelected) {\n if (page && page.length && page.some(({ id }) => !selectedRowIds[id])) {\n isAllPageRowsSelected = false\n }\n }\n\n const getAutoResetSelectedRows = useGetLatest(autoResetSelectedRows)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetSelectedRows()) {\n dispatch({ type: actions.resetSelectedRows })\n }\n }, [dispatch, data])\n\n const toggleAllRowsSelected = React.useCallback(\n value => dispatch({ type: actions.toggleAllRowsSelected, value }),\n [dispatch]\n )\n\n const toggleAllPageRowsSelected = React.useCallback(\n value => dispatch({ type: actions.toggleAllPageRowsSelected, value }),\n [dispatch]\n )\n\n const toggleRowSelected = React.useCallback(\n (id, value) => dispatch({ type: actions.toggleRowSelected, id, value }),\n [dispatch]\n )\n\n const getInstance = useGetLatest(instance)\n\n const getToggleAllRowsSelectedProps = makePropGetter(\n getHooks().getToggleAllRowsSelectedProps,\n { instance: getInstance() }\n )\n\n const getToggleAllPageRowsSelectedProps = makePropGetter(\n getHooks().getToggleAllPageRowsSelectedProps,\n { instance: getInstance() }\n )\n\n Object.assign(instance, {\n selectedFlatRows,\n isAllRowsSelected,\n isAllPageRowsSelected,\n toggleRowSelected,\n toggleAllRowsSelected,\n getToggleAllRowsSelectedProps,\n getToggleAllPageRowsSelectedProps,\n toggleAllPageRowsSelected,\n })\n}\n\nfunction prepareRow(row, { instance }) {\n row.toggleRowSelected = set => instance.toggleRowSelected(row.id, set)\n\n row.getToggleRowSelectedProps = makePropGetter(\n instance.getHooks().getToggleRowSelectedProps,\n { instance: instance, row }\n )\n}\n\nfunction getRowIsSelected(row, selectedRowIds, getSubRows) {\n if (selectedRowIds[row.id]) {\n return true\n }\n\n const subRows = getSubRows(row)\n\n if (subRows && subRows.length) {\n let allChildrenSelected = true\n let someSelected = false\n\n subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (getRowIsSelected(subRow, selectedRowIds, getSubRows)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n })\n return allChildrenSelected ? true : someSelected ? null : false\n }\n\n return false\n}\n","import React from 'react'\n\nimport {\n actions,\n functionalUpdate,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nconst defaultInitialRowStateAccessor = row => ({})\nconst defaultInitialCellStateAccessor = cell => ({})\n\n// Actions\nactions.setRowState = 'setRowState'\nactions.setCellState = 'setCellState'\nactions.resetRowState = 'resetRowState'\n\nexport const useRowState = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseRowState.pluginName = 'useRowState'\n\nfunction reducer(state, action, previousState, instance) {\n const {\n initialRowStateAccessor = defaultInitialRowStateAccessor,\n initialCellStateAccessor = defaultInitialCellStateAccessor,\n rowsById,\n } = instance\n\n if (action.type === actions.init) {\n return {\n rowState: {},\n ...state,\n }\n }\n\n if (action.type === actions.resetRowState) {\n return {\n ...state,\n rowState: instance.initialState.rowState || {},\n }\n }\n\n if (action.type === actions.setRowState) {\n const { rowId, value } = action\n\n const oldRowState =\n typeof state.rowState[rowId] !== 'undefined'\n ? state.rowState[rowId]\n : initialRowStateAccessor(rowsById[rowId])\n\n return {\n ...state,\n rowState: {\n ...state.rowState,\n [rowId]: functionalUpdate(value, oldRowState),\n },\n }\n }\n\n if (action.type === actions.setCellState) {\n const { rowId, columnId, value } = action\n\n const oldRowState =\n typeof state.rowState[rowId] !== 'undefined'\n ? state.rowState[rowId]\n : initialRowStateAccessor(rowsById[rowId])\n\n const oldCellState =\n typeof oldRowState?.cellState?.[columnId] !== 'undefined'\n ? oldRowState.cellState[columnId]\n : initialCellStateAccessor(\n rowsById[rowId]?.cells?.find(cell => cell.column.id === columnId)\n )\n\n return {\n ...state,\n rowState: {\n ...state.rowState,\n [rowId]: {\n ...oldRowState,\n cellState: {\n ...(oldRowState.cellState || {}),\n [columnId]: functionalUpdate(value, oldCellState),\n },\n },\n },\n }\n }\n}\n\nfunction useInstance(instance) {\n const { autoResetRowState = true, data, dispatch } = instance\n\n const setRowState = React.useCallback(\n (rowId, value) =>\n dispatch({\n type: actions.setRowState,\n rowId,\n value,\n }),\n [dispatch]\n )\n\n const setCellState = React.useCallback(\n (rowId, columnId, value) =>\n dispatch({\n type: actions.setCellState,\n rowId,\n columnId,\n value,\n }),\n [dispatch]\n )\n\n const getAutoResetRowState = useGetLatest(autoResetRowState)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetRowState()) {\n dispatch({ type: actions.resetRowState })\n }\n }, [data])\n\n Object.assign(instance, {\n setRowState,\n setCellState,\n })\n}\n\nfunction prepareRow(row, { instance }) {\n const {\n initialRowStateAccessor = defaultInitialRowStateAccessor,\n initialCellStateAccessor = defaultInitialCellStateAccessor,\n state: { rowState },\n } = instance\n\n if (row) {\n row.state =\n typeof rowState[row.id] !== 'undefined'\n ? rowState[row.id]\n : initialRowStateAccessor(row)\n\n row.setState = updater => {\n return instance.setRowState(row.id, updater)\n }\n\n row.cells.forEach(cell => {\n if (!row.state.cellState) {\n row.state.cellState = {}\n }\n\n cell.state =\n typeof row.state.cellState[cell.column.id] !== 'undefined'\n ? row.state.cellState[cell.column.id]\n : initialCellStateAccessor(cell)\n\n cell.setState = updater => {\n return instance.setCellState(row.id, cell.column.id, updater)\n }\n })\n }\n}\n","import React from 'react'\n\nimport { functionalUpdate, actions } from '../publicUtils'\n\n// Actions\nactions.resetColumnOrder = 'resetColumnOrder'\nactions.setColumnOrder = 'setColumnOrder'\n\nexport const useColumnOrder = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.visibleColumnsDeps.push((deps, { instance }) => {\n return [...deps, instance.state.columnOrder]\n })\n hooks.visibleColumns.push(visibleColumns)\n hooks.useInstance.push(useInstance)\n}\n\nuseColumnOrder.pluginName = 'useColumnOrder'\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n columnOrder: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetColumnOrder) {\n return {\n ...state,\n columnOrder: instance.initialState.columnOrder || [],\n }\n }\n\n if (action.type === actions.setColumnOrder) {\n return {\n ...state,\n columnOrder: functionalUpdate(action.columnOrder, state.columnOrder),\n }\n }\n}\n\nfunction visibleColumns(\n columns,\n {\n instance: {\n state: { columnOrder },\n },\n }\n) {\n // If there is no order, return the normal columns\n if (!columnOrder || !columnOrder.length) {\n return columns\n }\n\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n const columnsInOrder = []\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId)\n if (foundIndex > -1) {\n columnsInOrder.push(columnsCopy.splice(foundIndex, 1)[0])\n }\n }\n\n // If there are any columns left, add them to the end\n return [...columnsInOrder, ...columnsCopy]\n}\n\nfunction useInstance(instance) {\n const { dispatch } = instance\n\n instance.setColumnOrder = React.useCallback(\n columnOrder => {\n return dispatch({ type: actions.setColumnOrder, columnOrder })\n },\n [dispatch]\n )\n}\n","import React from 'react'\n\nimport {\n actions,\n defaultColumn,\n makePropGetter,\n useGetLatest,\n ensurePluginOrder,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, passiveEventSupported } from '../utils'\n\n// Default Column\ndefaultColumn.canResize = true\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport const useResizeColumns = hooks => {\n hooks.getResizerProps = [defaultGetResizerProps]\n hooks.getHeaderProps.push({\n style: {\n position: 'relative',\n },\n })\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n}\n\nconst defaultGetResizerProps = (props, { instance, header }) => {\n const { dispatch } = instance\n\n const onResizeStart = (e, header) => {\n let isTouchEvent = false\n if (e.type === 'touchstart') {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return\n }\n isTouchEvent = true\n }\n const headersToResize = getLeafHeaders(header)\n const headerIdWidths = headersToResize.map(d => [d.id, d.totalWidth])\n\n const clientX = isTouchEvent ? Math.round(e.touches[0].clientX) : e.clientX\n\n let raf\n let mostRecentClientX\n\n const dispatchEnd = () => {\n window.cancelAnimationFrame(raf)\n raf = null\n dispatch({ type: actions.columnDoneResizing })\n }\n const dispatchMove = () => {\n window.cancelAnimationFrame(raf)\n raf = null\n dispatch({ type: actions.columnResizing, clientX: mostRecentClientX })\n }\n\n const scheduleDispatchMoveOnNextAnimationFrame = clientXPos => {\n mostRecentClientX = clientXPos\n if (!raf) {\n raf = window.requestAnimationFrame(dispatchMove)\n }\n }\n\n const handlersAndEvents = {\n mouse: {\n moveEvent: 'mousemove',\n moveHandler: e => scheduleDispatchMoveOnNextAnimationFrame(e.clientX),\n upEvent: 'mouseup',\n upHandler: e => {\n document.removeEventListener(\n 'mousemove',\n handlersAndEvents.mouse.moveHandler\n )\n document.removeEventListener(\n 'mouseup',\n handlersAndEvents.mouse.upHandler\n )\n dispatchEnd()\n },\n },\n touch: {\n moveEvent: 'touchmove',\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n scheduleDispatchMoveOnNextAnimationFrame(e.touches[0].clientX)\n return false\n },\n upEvent: 'touchend',\n upHandler: e => {\n document.removeEventListener(\n handlersAndEvents.touch.moveEvent,\n handlersAndEvents.touch.moveHandler\n )\n document.removeEventListener(\n handlersAndEvents.touch.upEvent,\n handlersAndEvents.touch.moveHandler\n )\n dispatchEnd()\n },\n },\n }\n\n const events = isTouchEvent\n ? handlersAndEvents.touch\n : handlersAndEvents.mouse\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n document.addEventListener(\n events.moveEvent,\n events.moveHandler,\n passiveIfSupported\n )\n document.addEventListener(\n events.upEvent,\n events.upHandler,\n passiveIfSupported\n )\n\n dispatch({\n type: actions.columnStartResizing,\n columnId: header.id,\n columnWidth: header.totalWidth,\n headerIdWidths,\n clientX,\n })\n }\n\n return [\n props,\n {\n onMouseDown: e => e.persist() || onResizeStart(e, header),\n onTouchStart: e => e.persist() || onResizeStart(e, header),\n style: {\n cursor: 'col-resize',\n },\n draggable: false,\n role: 'separator',\n },\n ]\n}\n\nuseResizeColumns.pluginName = 'useResizeColumns'\n\nfunction reducer(state, action) {\n if (action.type === actions.init) {\n return {\n columnResizing: {\n columnWidths: {},\n },\n ...state,\n }\n }\n\n if (action.type === actions.resetResize) {\n return {\n ...state,\n columnResizing: {\n columnWidths: {},\n },\n }\n }\n\n if (action.type === actions.columnStartResizing) {\n const { clientX, columnId, columnWidth, headerIdWidths } = action\n\n return {\n ...state,\n columnResizing: {\n ...state.columnResizing,\n startX: clientX,\n headerIdWidths,\n columnWidth,\n isResizingColumn: columnId,\n },\n }\n }\n\n if (action.type === actions.columnResizing) {\n const { clientX } = action\n const { startX, columnWidth, headerIdWidths = [] } = state.columnResizing\n\n const deltaX = clientX - startX\n const percentageDeltaX = deltaX / columnWidth\n\n const newColumnWidths = {}\n\n headerIdWidths.forEach(([headerId, headerWidth]) => {\n newColumnWidths[headerId] = Math.max(\n headerWidth + headerWidth * percentageDeltaX,\n 0\n )\n })\n\n return {\n ...state,\n columnResizing: {\n ...state.columnResizing,\n columnWidths: {\n ...state.columnResizing.columnWidths,\n ...newColumnWidths,\n },\n },\n }\n }\n\n if (action.type === actions.columnDoneResizing) {\n return {\n ...state,\n columnResizing: {\n ...state.columnResizing,\n startX: null,\n isResizingColumn: null,\n },\n }\n }\n}\n\nconst useInstanceBeforeDimensions = instance => {\n const {\n flatHeaders,\n disableResizing,\n getHooks,\n state: { columnResizing },\n } = instance\n\n const getInstance = useGetLatest(instance)\n\n flatHeaders.forEach(header => {\n const canResize = getFirstDefined(\n header.disableResizing === true ? false : undefined,\n disableResizing === true ? false : undefined,\n true\n )\n\n header.canResize = canResize\n header.width =\n columnResizing.columnWidths[header.id] ||\n header.originalWidth ||\n header.width\n header.isResizing = columnResizing.isResizingColumn === header.id\n\n if (canResize) {\n header.getResizerProps = makePropGetter(getHooks().getResizerProps, {\n instance: getInstance(),\n header,\n })\n }\n })\n}\n\nfunction useInstance(instance) {\n const { plugins, dispatch, autoResetResize = true, columns } = instance\n\n ensurePluginOrder(plugins, ['useAbsoluteLayout'], 'useResizeColumns')\n\n const getAutoResetResize = useGetLatest(autoResetResize)\n useMountedLayoutEffect(() => {\n if (getAutoResetResize()) {\n dispatch({ type: actions.resetResize })\n }\n }, [columns])\n\n const resetResizing = React.useCallback(\n () => dispatch({ type: actions.resetResize }),\n [dispatch]\n )\n\n Object.assign(instance, {\n resetResizing,\n })\n}\n\nfunction getLeafHeaders(header) {\n const leafHeaders = []\n const recurseHeader = header => {\n if (header.columns && header.columns.length) {\n header.columns.map(recurseHeader)\n }\n leafHeaders.push(header)\n }\n recurseHeader(header)\n return leafHeaders\n}\n","const cellStyles = {\n position: 'absolute',\n top: 0,\n}\n\nexport const useAbsoluteLayout = hooks => {\n hooks.getTableBodyProps.push(getRowStyles)\n hooks.getRowProps.push(getRowStyles)\n hooks.getHeaderGroupProps.push(getRowStyles)\n hooks.getFooterGroupProps.push(getRowStyles)\n\n hooks.getHeaderProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n left: `${column.totalLeft}px`,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getCellProps.push((props, { cell }) => [\n props,\n {\n style: {\n ...cellStyles,\n left: `${cell.column.totalLeft}px`,\n width: `${cell.column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getFooterProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n left: `${column.totalLeft}px`,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n}\n\nuseAbsoluteLayout.pluginName = 'useAbsoluteLayout'\n\nconst getRowStyles = (props, { instance }) => [\n props,\n {\n style: {\n position: 'relative',\n width: `${instance.totalColumnsWidth}px`,\n },\n },\n]\n","const cellStyles = {\n display: 'inline-block',\n boxSizing: 'border-box',\n}\n\nconst getRowStyles = (props, { instance }) => [\n props,\n {\n style: {\n display: 'flex',\n width: `${instance.totalColumnsWidth}px`,\n },\n },\n]\n\nexport const useBlockLayout = hooks => {\n hooks.getRowProps.push(getRowStyles)\n hooks.getHeaderGroupProps.push(getRowStyles)\n hooks.getFooterGroupProps.push(getRowStyles)\n\n hooks.getHeaderProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getCellProps.push((props, { cell }) => [\n props,\n {\n style: {\n ...cellStyles,\n width: `${cell.column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getFooterProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n}\n\nuseBlockLayout.pluginName = 'useBlockLayout'\n","export function useFlexLayout(hooks) {\n hooks.getTableProps.push(getTableProps)\n hooks.getRowProps.push(getRowStyles)\n hooks.getHeaderGroupProps.push(getRowStyles)\n hooks.getFooterGroupProps.push(getRowStyles)\n hooks.getHeaderProps.push(getHeaderProps)\n hooks.getCellProps.push(getCellProps)\n hooks.getFooterProps.push(getFooterProps)\n}\n\nuseFlexLayout.pluginName = 'useFlexLayout'\n\nconst getTableProps = (props, { instance }) => [\n props,\n {\n style: {\n minWidth: `${instance.totalColumnsMinWidth}px`,\n },\n },\n]\n\nconst getRowStyles = (props, { instance }) => [\n props,\n {\n style: {\n display: 'flex',\n flex: '1 0 auto',\n minWidth: `${instance.totalColumnsMinWidth}px`,\n },\n },\n]\n\nconst getHeaderProps = (props, { column }) => [\n props,\n {\n style: {\n boxSizing: 'border-box',\n flex: column.totalFlexWidth\n ? `${column.totalFlexWidth} 0 auto`\n : undefined,\n minWidth: `${column.totalMinWidth}px`,\n width: `${column.totalWidth}px`,\n },\n },\n]\n\nconst getCellProps = (props, { cell }) => [\n props,\n {\n style: {\n boxSizing: 'border-box',\n flex: `${cell.column.totalFlexWidth} 0 auto`,\n minWidth: `${cell.column.totalMinWidth}px`,\n width: `${cell.column.totalWidth}px`,\n },\n },\n]\n\nconst getFooterProps = (props, { column }) => [\n props,\n {\n style: {\n boxSizing: 'border-box',\n flex: column.totalFlexWidth\n ? `${column.totalFlexWidth} 0 auto`\n : undefined,\n minWidth: `${column.totalMinWidth}px`,\n width: `${column.totalWidth}px`,\n },\n },\n]\n","import { actions } from '../publicUtils'\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport function useGridLayout(hooks) {\n hooks.stateReducers.push(reducer)\n hooks.getTableProps.push(getTableProps)\n hooks.getHeaderProps.push(getHeaderProps)\n hooks.getRowProps.push(getRowProps)\n}\n\nuseGridLayout.pluginName = 'useGridLayout'\n\nconst getTableProps = (props, { instance }) => {\n const gridTemplateColumns = instance.visibleColumns.map(column => {\n if (instance.state.gridLayout.columnWidths[column.id])\n return `${instance.state.gridLayout.columnWidths[column.id]}px`\n // When resizing, lock the width of all unset columns\n // instead of using user-provided width or defaultColumn width,\n // which could potentially be 'auto' or 'fr' units that don't scale linearly\n if (instance.state.columnResizing?.isResizingColumn)\n return `${instance.state.gridLayout.startWidths[column.id]}px`\n if (typeof column.width === 'number') return `${column.width}px`\n return column.width\n })\n return [\n props,\n {\n style: {\n display: `grid`,\n gridTemplateColumns: gridTemplateColumns.join(` `),\n },\n },\n ]\n}\n\nconst getHeaderProps = (props, { column }) => [\n props,\n {\n id: `header-cell-${column.id}`,\n style: {\n position: `sticky`, //enables a scroll wrapper to be placed around the table and have sticky headers\n gridColumn: `span ${column.totalVisibleHeaderCount}`,\n },\n },\n]\n\nconst getRowProps = (props, { row }) => {\n if (row.isExpanded) {\n return [\n props,\n {\n style: {\n gridColumn: `1 / ${row.cells.length + 1}`,\n },\n },\n ]\n }\n return [props, {}]\n}\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n gridLayout: {\n columnWidths: {},\n },\n ...state,\n }\n }\n\n if (action.type === actions.resetResize) {\n return {\n ...state,\n gridLayout: {\n columnWidths: {},\n },\n }\n }\n\n if (action.type === actions.columnStartResizing) {\n const { columnId, headerIdWidths } = action\n const columnWidth = getElementWidth(columnId)\n\n if (columnWidth !== undefined) {\n const startWidths = instance.visibleColumns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: getElementWidth(column.id),\n }),\n {}\n )\n const minWidths = instance.visibleColumns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: column.minWidth,\n }),\n {}\n )\n const maxWidths = instance.visibleColumns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: column.maxWidth,\n }),\n {}\n )\n\n const headerIdGridWidths = headerIdWidths.map(([headerId]) => [\n headerId,\n getElementWidth(headerId),\n ])\n\n return {\n ...state,\n gridLayout: {\n ...state.gridLayout,\n startWidths,\n minWidths,\n maxWidths,\n headerIdGridWidths,\n columnWidth,\n },\n }\n } else {\n return state\n }\n }\n\n if (action.type === actions.columnResizing) {\n const { clientX } = action\n const { startX } = state.columnResizing\n const {\n columnWidth,\n minWidths,\n maxWidths,\n headerIdGridWidths = [],\n } = state.gridLayout\n\n const deltaX = clientX - startX\n const percentageDeltaX = deltaX / columnWidth\n\n const newColumnWidths = {}\n\n headerIdGridWidths.forEach(([headerId, headerWidth]) => {\n newColumnWidths[headerId] = Math.min(\n Math.max(\n minWidths[headerId],\n headerWidth + headerWidth * percentageDeltaX\n ),\n maxWidths[headerId]\n )\n })\n\n return {\n ...state,\n gridLayout: {\n ...state.gridLayout,\n columnWidths: {\n ...state.gridLayout.columnWidths,\n ...newColumnWidths,\n },\n },\n }\n }\n\n if (action.type === actions.columnDoneResizing) {\n return {\n ...state,\n gridLayout: {\n ...state.gridLayout,\n startWidths: {},\n minWidths: {},\n maxWidths: {},\n },\n }\n }\n}\n\nfunction getElementWidth(columnId) {\n const width = document.getElementById(`header-cell-${columnId}`)?.offsetWidth\n\n if (width !== undefined) {\n return width\n }\n}\n","if (process.env.NODE_ENV === 'production') {\n module.exports = require('./dist/react-table.production.min.js')\n} else {\n module.exports = require('./dist/react-table.development.js')\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","// @flow\nimport type { Interpolation } from '../types';\n\nexport default (\n strings: Array,\n interpolations: Array\n): Array => {\n const result = [strings[0]];\n\n for (let i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n};\n","// @flow\nimport { typeOf } from 'react-is';\n\nexport default (x: any): boolean =>\n x !== null &&\n typeof x === 'object' &&\n (x.toString ? x.toString() : Object.prototype.toString.call(x)) === '[object Object]' &&\n !typeOf(x);\n","// @flow\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});\n","// @flow\nexport default function isFunction(test: any): boolean %checks {\n return typeof test === 'function';\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function getComponentName(\n target: $PropertyType\n): string {\n return (\n (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n // $FlowFixMe\n target.displayName ||\n // $FlowFixMe\n target.name ||\n 'Component'\n );\n}\n","// @flow\nexport default function isStyledComponent(target: any): boolean %checks {\n return target && typeof target.styledComponentId === 'string';\n}\n","// @flow\n\ndeclare var SC_DISABLE_SPEEDY: ?boolean;\ndeclare var __VERSION__: string;\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY = Boolean(\n typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' && typeof process.env !== 'undefined'\n ? typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' && process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n : false\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","// @flow\nimport errorMap from './errors';\n\nconst ERRORS = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args) {\n let a = args[0];\n const b = [];\n\n for (let c = 1, len = args.length; c < len; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(d => {\n a = a.replace(/%[a-z]/, d);\n });\n\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n code: string | number,\n ...interpolations: Array\n) {\n if (process.env.NODE_ENV === 'production') {\n throw new Error(\n `An error occurred. See https://git.io/JUIaE#${code} for more information.${\n interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n }`\n );\n } else {\n throw new Error(format(ERRORS[code], ...interpolations).trim());\n }\n}\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport type { GroupedTag, Tag } from './types';\nimport { SPLITTER } from '../constants';\nimport throwStyledError from '../utils/error';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag): GroupedTag => {\n return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nclass DefaultGroupedTag implements GroupedTag {\n groupSizes: Uint32Array;\n\n length: number;\n\n tag: Tag;\n\n constructor(tag: Tag) {\n this.groupSizes = new Uint32Array(BASE_SIZE);\n this.length = BASE_SIZE;\n this.tag = tag;\n }\n\n indexOfGroup(group: number): number {\n let index = 0;\n for (let i = 0; i < group; i++) {\n index += this.groupSizes[i];\n }\n\n return index;\n }\n\n insertRules(group: number, rules: string[]): void {\n if (group >= this.groupSizes.length) {\n const oldBuffer = this.groupSizes;\n const oldSize = oldBuffer.length;\n\n let newSize = oldSize;\n while (group >= newSize) {\n newSize <<= 1;\n if (newSize < 0) {\n throwStyledError(16, `${group}`);\n }\n }\n\n this.groupSizes = new Uint32Array(newSize);\n this.groupSizes.set(oldBuffer);\n this.length = newSize;\n\n for (let i = oldSize; i < newSize; i++) {\n this.groupSizes[i] = 0;\n }\n }\n\n let ruleIndex = this.indexOfGroup(group + 1);\n for (let i = 0, l = rules.length; i < l; i++) {\n if (this.tag.insertRule(ruleIndex, rules[i])) {\n this.groupSizes[group]++;\n ruleIndex++;\n }\n }\n }\n\n clearGroup(group: number): void {\n if (group < this.length) {\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n this.groupSizes[group] = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n this.tag.deleteRule(startIndex);\n }\n }\n }\n\n getGroup(group: number): string {\n let css = '';\n if (group >= this.length || this.groupSizes[group] === 0) {\n return css;\n }\n\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n for (let i = startIndex; i < endIndex; i++) {\n css += `${this.tag.getRule(i)}${SPLITTER}`;\n }\n\n return css;\n }\n}\n","// @flow\n\nimport throwStyledError from '../utils/error';\n\nconst MAX_SMI = 1 << 31 - 1;\n\nlet groupIDRegister: Map = new Map();\nlet reverseRegister: Map = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n groupIDRegister = new Map();\n reverseRegister = new Map();\n nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n if (groupIDRegister.has(id)) {\n return (groupIDRegister.get(id): any);\n }\n\n while (reverseRegister.has(nextFreeGroup)) {\n nextFreeGroup++;\n }\n\n const group = nextFreeGroup++;\n\n if (\n process.env.NODE_ENV !== 'production' &&\n ((group | 0) < 0 || group > MAX_SMI)\n ) {\n throwStyledError(16, `${group}`);\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n if (group >= nextFreeGroup) {\n nextFreeGroup = group + 1;\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n};\n","// @flow\n\nimport { SPLITTER, SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport type { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n const tag = sheet.getTag();\n const { length } = tag;\n\n let css = '';\n for (let group = 0; group < length; group++) {\n const id = getIdForGroup(group);\n if (id === undefined) continue;\n\n const names = sheet.names.get(id);\n const rules = tag.getGroup(group);\n if (!names || !rules || !names.size) continue;\n\n const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n let content = '';\n if (names !== undefined) {\n names.forEach(name => {\n if (name.length > 0) {\n content += `${name},`;\n }\n });\n }\n\n // NOTE: It's easier to collect rules and have the marker\n // after the actual rules to simplify the rehydration\n css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n }\n\n return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n const names = content.split(',');\n let name;\n\n for (let i = 0, l = names.length; i < l; i++) {\n // eslint-disable-next-line\n if ((name = names[i])) {\n sheet.registerName(id, name);\n }\n }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n const parts = (style.textContent || '').split(SPLITTER);\n const rules: string[] = [];\n\n for (let i = 0, l = parts.length; i < l; i++) {\n const part = parts[i].trim();\n if (!part) continue;\n\n const marker = part.match(MARKER_RE);\n\n if (marker) {\n const group = parseInt(marker[1], 10) | 0;\n const id = marker[2];\n\n if (group !== 0) {\n // Rehydrate componentId to group index mapping\n setGroupForId(id, group);\n // Rehydrate names and rules\n // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n rehydrateNamesFromContent(sheet, id, marker[3]);\n sheet.getTag().insertRules(group, rules);\n }\n\n rules.length = 0;\n } else {\n rules.push(part);\n }\n }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n const nodes = document.querySelectorAll(SELECTOR);\n\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = ((nodes[i]: any): HTMLStyleElement);\n if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n rehydrateSheetFromTag(sheet, node);\n\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n }\n};\n","// @flow\n/* eslint-disable camelcase, no-undef */\n\ndeclare var __webpack_nonce__: string;\n\nconst getNonce = () => {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n};\n\nexport default getNonce;\n","// @flow\n\nimport { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport getNonce from '../utils/nonce';\nimport throwStyledError from '../utils/error';\n\nconst ELEMENT_TYPE = 1; /* Node.ELEMENT_TYPE */\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: HTMLElement): void | HTMLStyleElement => {\n const { childNodes } = target;\n\n for (let i = childNodes.length; i >= 0; i--) {\n const child = ((childNodes[i]: any): ?HTMLElement);\n if (child && child.nodeType === ELEMENT_TYPE && child.hasAttribute(SC_ATTR)) {\n return ((child: any): HTMLStyleElement);\n }\n }\n\n return undefined;\n};\n\n/** Create a style element inside `target` or after the last */\nexport const makeStyleTag = (target?: HTMLElement): HTMLStyleElement => {\n const head = ((document.head: any): HTMLElement);\n const parent = target || head;\n const style = document.createElement('style');\n const prevStyle = findLastStyleTag(parent);\n const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n const nonce = getNonce();\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n parent.insertBefore(style, nextSibling);\n\n return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n if (tag.sheet) {\n return ((tag.sheet: any): CSSStyleSheet);\n }\n\n // Avoid Firefox quirk where the style element might not have a sheet property\n const { styleSheets } = document;\n for (let i = 0, l = styleSheets.length; i < l; i++) {\n const sheet = styleSheets[i];\n if (sheet.ownerNode === tag) {\n return ((sheet: any): CSSStyleSheet);\n }\n }\n\n throwStyledError(17);\n return (undefined: any);\n};\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport { makeStyleTag, getSheet } from './dom';\nimport type { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions): Tag => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n\n // Avoid Edge bug where empty style elements don't create sheets\n element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule !== undefined && typeof rule.cssText === 'string') {\n return rule.cssText;\n } else {\n return '';\n }\n }\n}\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport class TextTag implements Tag {\n element: HTMLStyleElement;\n\n nodes: NodeList;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n this.nodes = element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.nodes[index].textContent;\n } else {\n return '';\n }\n }\n}\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: HTMLElement) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n}\n","// @flow\nimport { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport type { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean,\n useCSSOMInjection?: boolean,\n target?: HTMLElement,\n};\n\ntype GlobalStylesAllocationMap = { [key: string]: number };\ntype NamesAllocationMap = Map>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n\n names: NamesAllocationMap;\n\n options: SheetOptions;\n\n server: boolean;\n\n tag: void | GroupedTag;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT,\n globalStyles?: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names);\n this.server = !!options.isServer;\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames?: boolean = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag(): GroupedTag {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id): any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id): any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id): any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n\n /** Outputs the current sheet as a CSS string with markers for SSR */\n toString(): string {\n return outputSheet(this);\n }\n}\n","// @flow\n/* eslint-disable no-bitwise */\n\nconst AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number): string =>\n String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number): string {\n let name = '';\n let x;\n\n /* get a char and divide by alphabet-length */\n for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","// @flow\n/* eslint-disable */\n\nexport const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string): number => {\n let i = x.length;\n\n while (i) {\n h = (h * 33) ^ x.charCodeAt(--i);\n }\n\n return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string): number => {\n return phash(SEED, x);\n};\n","// @flow\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\nimport type { RuleSet } from '../types';\n\nexport default function isStaticRules(rules: RuleSet): boolean {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","// @flow\nimport { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n baseHash: number;\n\n baseStyle: ?ComponentStyle;\n\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n staticRulesId: string;\n\n constructor(rules: RuleSet, componentId: string, baseStyle?: ComponentStyle) {\n this.rules = rules;\n this.staticRulesId = '';\n this.isStatic = process.env.NODE_ENV === 'production' &&\n (baseStyle === undefined || baseStyle.isStatic) &&\n isStaticRules(rules);\n this.componentId = componentId;\n\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n this.baseHash = phash(SEED, componentId);\n\n this.baseStyle = baseStyle;\n\n // NOTE: This registers the componentId, which ensures a consistent order\n // for this component's styles compared to others\n StyleSheet.registerId(componentId);\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n generateAndInjectStyles(executionContext: Object, styleSheet: StyleSheet, stylis: Stringifier) {\n const { componentId } = this;\n\n const names = [];\n\n if (this.baseStyle) {\n names.push(this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis));\n }\n\n // force dynamic classnames if user-supplied stylis plugins are in use\n if (this.isStatic && !stylis.hash) {\n if (this.staticRulesId && styleSheet.hasNameForId(componentId, this.staticRulesId)) {\n names.push(this.staticRulesId);\n } else {\n const cssStatic = flatten(this.rules, executionContext, styleSheet, stylis).join('');\n const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, componentId);\n\n styleSheet.insertRules(componentId, name, cssStaticFormatted);\n }\n\n names.push(name);\n this.staticRulesId = name;\n }\n } else {\n const { length } = this.rules;\n let dynamicHash = phash(this.baseHash, stylis.hash);\n let css = '';\n\n for (let i = 0; i < length; i++) {\n const partRule = this.rules[i];\n\n if (typeof partRule === 'string') {\n css += partRule;\n\n if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule + i);\n } else if (partRule) {\n const partChunk = flatten(partRule, executionContext, styleSheet, stylis);\n const partString = Array.isArray(partChunk) ? partChunk.join('') : partChunk;\n dynamicHash = phash(dynamicHash, partString + i);\n css += partString;\n }\n }\n\n if (css) {\n const name = generateName(dynamicHash >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssFormatted = stylis(css, `.${name}`, undefined, componentId);\n styleSheet.insertRules(componentId, name, cssFormatted);\n }\n\n names.push(name);\n }\n }\n\n return names.join(' ');\n }\n}\n","import Stylis from '@emotion/stylis';\nimport { type Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { phash, SEED } from './hash';\nimport insertRulePlugin from './stylisPluginInsertRule';\n\nconst COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\nconst COMPLEX_SELECTOR_PREFIX = [':', '[', '.', '#'];\n\ntype StylisInstanceConstructorArgs = {\n options?: Object,\n plugins?: Array,\n};\n\nexport default function createStylisInstance({\n options = EMPTY_OBJECT,\n plugins = EMPTY_ARRAY,\n}: StylisInstanceConstructorArgs = EMPTY_OBJECT) {\n const stylis = new Stylis(options);\n\n // Wrap `insertRulePlugin to build a list of rules,\n // and then make our own plugin to return the rules. This\n // makes it easier to hook into the existing SSR architecture\n\n let parsingRules = [];\n\n // eslint-disable-next-line consistent-return\n const returnRulesPlugin = context => {\n if (context === -2) {\n const parsedRules = parsingRules;\n parsingRules = [];\n return parsedRules;\n }\n };\n\n const parseRulesPlugin = insertRulePlugin(rule => {\n parsingRules.push(rule);\n });\n\n let _componentId: string;\n let _selector: string;\n let _selectorRegexp: RegExp;\n let _consecutiveSelfRefRegExp: RegExp;\n\n const selfReferenceReplacer = (match, offset, string) => {\n if (\n // do not replace the first occurrence if it is complex (has a modifier)\n (offset === 0 ? COMPLEX_SELECTOR_PREFIX.indexOf(string[_selector.length]) === -1 : true) &&\n // no consecutive self refs (.b.b); that is a precedence boost and treated differently\n !string.match(_consecutiveSelfRefRegExp)\n ) {\n return `.${_componentId}`;\n }\n\n return match;\n };\n\n /**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n *\n * https://github.com/thysultan/stylis.js/tree/v3.5.4#plugins <- more info about the context phase values\n * \"2\" means this plugin is taking effect at the very end after all other processing is complete\n */\n const selfReferenceReplacementPlugin = (context, _, selectors) => {\n if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {\n // eslint-disable-next-line no-param-reassign\n selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);\n }\n };\n\n stylis.use([...plugins, selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]);\n\n function stringifyRules(css, selector, prefix, componentId = '&'): Stringifier {\n const flatCSS = css.replace(COMMENT_REGEX, '');\n const cssStr = selector && prefix ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS;\n\n // stylis has no concept of state to be passed to plugins\n // but since JS is single-threaded, we can rely on that to ensure\n // these properties stay in sync with the current stylis run\n _componentId = componentId;\n _selector = selector;\n _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n _consecutiveSelfRefRegExp = new RegExp(`(\\\\${_selector}\\\\b){2,}`);\n\n return stylis(prefix || !selector ? '' : selector, cssStr);\n }\n\n stringifyRules.hash = plugins.length\n ? plugins\n .reduce((acc, plugin) => {\n if (!plugin.name) {\n throwStyledError(15);\n }\n\n return phash(acc, plugin.name);\n }, SEED)\n .toString()\n : '';\n\n return stringifyRules;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2016 Sultan Tarimo\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR\n * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/* eslint-disable */\n\nexport default function(insertRule) {\n const delimiter = '/*|*/';\n const needle = `${delimiter}}`;\n\n function toSheet(block) {\n if (block) {\n try {\n insertRule(`${block}}`);\n } catch (e) {}\n }\n }\n\n return function ruleSheet(\n context,\n content,\n selectors,\n parents,\n line,\n column,\n length,\n ns,\n depth,\n at\n ) {\n switch (context) {\n // property\n case 1:\n // @import\n if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(`${content};`), '';\n break;\n // selector\n case 2:\n if (ns === 0) return content + delimiter;\n break;\n // at-rule\n case 3:\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n return insertRule(selectors[0] + content), '';\n default:\n return content + (at === 0 ? delimiter : '');\n }\n case -2:\n content.split(needle).forEach(toSheet);\n }\n };\n}\n","// @flow\nimport React, { type Context, type Node, useContext, useEffect, useMemo, useState } from 'react';\nimport shallowequal from 'shallowequal';\nimport StyleSheet from '../sheet';\nimport type { Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\ntype Props = {\n children?: Node,\n disableCSSOMInjection?: boolean,\n disableVendorPrefixes?: boolean,\n sheet?: StyleSheet,\n stylisPlugins?: Array,\n target?: HTMLElement,\n};\n\nexport const StyleSheetContext: Context = React.createContext();\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\nexport const StylisContext: Context = React.createContext();\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport const masterSheet: StyleSheet = new StyleSheet();\nexport const masterStylis: Stringifier = createStylisInstance();\n\nexport function useStyleSheet(): StyleSheet {\n return useContext(StyleSheetContext) || masterSheet;\n}\n\nexport function useStylis(): Stringifier {\n return useContext(StylisContext) || masterStylis;\n}\n\nexport default function StyleSheetManager(props: Props) {\n const [plugins, setPlugins] = useState(props.stylisPlugins);\n const contextStyleSheet = useStyleSheet();\n\n const styleSheet = useMemo(() => {\n let sheet = contextStyleSheet;\n\n if (props.sheet) {\n // eslint-disable-next-line prefer-destructuring\n sheet = props.sheet;\n } else if (props.target) {\n sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n }\n\n if (props.disableCSSOMInjection) {\n sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n }\n\n return sheet;\n }, [props.disableCSSOMInjection, props.sheet, props.target]);\n\n const stylis = useMemo(\n () =>\n createStylisInstance({\n options: { prefix: !props.disableVendorPrefixes },\n plugins,\n }),\n [props.disableVendorPrefixes, plugins]\n );\n\n useEffect(() => {\n if (!shallowequal(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n }, [props.stylisPlugins]);\n\n return (\n \n \n {process.env.NODE_ENV !== 'production'\n ? React.Children.only(props.children)\n : props.children}\n \n \n );\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport { type Stringifier } from '../types';\nimport throwStyledError from '../utils/error';\nimport { masterStylis } from './StyleSheetManager';\n\nexport default class Keyframes {\n id: string;\n\n name: string;\n\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = masterStylis) => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n toString = () => {\n return throwStyledError(12, String(this.name));\n };\n\n getName(stylisInstance: Stringifier = masterStylis) {\n return this.name + stylisInstance.hash;\n }\n}\n","// @flow\n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\nconst uppercaseCheck = /([A-Z])/;\nconst uppercasePattern = /([A-Z])/g;\nconst msPattern = /^ms-/;\nconst prefixAndLowerCase = (char: string): string => `-${char.toLowerCase()}`;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nexport default function hyphenateStyleName(string: string): string {\n return uppercaseCheck.test(string)\n ? string\n .replace(uppercasePattern, prefixAndLowerCase)\n .replace(msPattern, '-ms-')\n : string;\n}\n","// @flow\nimport { isElement } from 'react-is';\nimport getComponentName from './getComponentName';\nimport isFunction from './isFunction';\nimport isStatelessFunction from './isStatelessFunction';\nimport isPlainObject from './isPlainObject';\nimport isStyledComponent from './isStyledComponent';\nimport Keyframes from '../models/Keyframes';\nimport hyphenate from './hyphenateStyleName';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { type Stringifier } from '../types';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = chunk => chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Object, prevKey?: string): Array => {\n const rules = [];\n\n for (const key in obj) {\n if (!obj.hasOwnProperty(key) || isFalsish(obj[key])) continue;\n\n if ((Array.isArray(obj[key]) && obj[key].isCss) || isFunction(obj[key])) {\n rules.push(`${hyphenate(key)}:`, obj[key], ';');\n } else if (isPlainObject(obj[key])) {\n rules.push(...objToCssArray(obj[key], key));\n } else {\n rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, obj[key])};`);\n }\n }\n\n return prevKey ? [`${prevKey} {`, ...rules, '}'] : rules;\n};\n\nexport default function flatten(\n chunk: any,\n executionContext: ?Object,\n styleSheet: ?Object,\n stylisInstance: ?Stringifier\n): any {\n if (Array.isArray(chunk)) {\n const ruleSet = [];\n\n for (let i = 0, len = chunk.length, result; i < len; i += 1) {\n result = flatten(chunk[i], executionContext, styleSheet, stylisInstance);\n\n if (result === '') continue;\n else if (Array.isArray(result)) ruleSet.push(...result);\n else ruleSet.push(result);\n }\n\n return ruleSet;\n }\n\n if (isFalsish(chunk)) {\n return '';\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return `.${chunk.styledComponentId}`;\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (isStatelessFunction(chunk) && executionContext) {\n const result = chunk(executionContext);\n\n if (process.env.NODE_ENV !== 'production' && isElement(result)) {\n // eslint-disable-next-line no-console\n console.warn(\n `${getComponentName(\n chunk\n )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n );\n }\n\n return flatten(result, executionContext, styleSheet, stylisInstance);\n } else return chunk;\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet, stylisInstance);\n return chunk.getName(stylisInstance);\n } else return chunk;\n }\n\n /* Handle objects */\n return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString();\n}\n","// @flow\nexport default function isStatelessFunction(test: any): boolean {\n return (\n typeof test === 'function'\n && !(\n test.prototype\n && test.prototype.isReactComponent\n )\n );\n}\n","// @flow\nimport unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any): any {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n // $FlowFixMe\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n }\n\n return String(value).trim();\n}\n","// @flow\nimport interleave from '../utils/interleave';\nimport isPlainObject from '../utils/isPlainObject';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport isFunction from '../utils/isFunction';\nimport flatten from '../utils/flatten';\nimport type { Interpolation, RuleSet, Styles } from '../types';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = arg => {\n if (Array.isArray(arg)) {\n // eslint-disable-next-line no-param-reassign\n arg.isCss = true;\n }\n return arg;\n};\n\nexport default function css(styles: Styles, ...interpolations: Array): RuleSet {\n if (isFunction(styles) || isPlainObject(styles)) {\n // $FlowFixMe\n return addTag(flatten(interleave(EMPTY_ARRAY, [styles, ...interpolations])));\n }\n\n if (interpolations.length === 0 && styles.length === 1 && typeof styles[0] === 'string') {\n // $FlowFixMe\n return styles;\n }\n\n // $FlowFixMe\n return addTag(flatten(interleave(styles, interpolations)));\n}\n","// @flow\n\nimport { useRef } from 'react';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string) => {\n if (process.env.NODE_ENV !== 'production') {\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n const message =\n `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n \"You may see this warning because you've called styled inside another component.\\n\" +\n 'To resolve this only create new StyledComponents outside of any render method and function component.';\n\n // If a hook is called outside of a component:\n // React 17 and earlier throw an error\n // React 18 and above use console.error\n\n const originalConsoleError = console.error // eslint-disable-line no-console\n try {\n let didNotCallInvalidHook = true\n /* $FlowIgnore[cannot-write] */\n console.error = (consoleErrorMessage, ...consoleErrorArgs) => { // eslint-disable-line no-console\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(consoleErrorMessage)) {\n didNotCallInvalidHook = false\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n } else {\n originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n }\n }\n // We purposefully call `useRef` outside of a component and expect it to throw\n // If it doesn't, then we're inside another component.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useRef();\n\n if (didNotCallInvalidHook && !seen.has(message)) {\n // eslint-disable-next-line no-console\n console.warn(message);\n seen.add(message);\n }\n } catch (error) {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(error.message)) {\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n }\n } finally {\n /* $FlowIgnore[cannot-write] */\n console.error = originalConsoleError; // eslint-disable-line no-console\n }\n }\n};\n","// @flow\nimport { EMPTY_OBJECT } from './empties';\n\ntype Props = {\n theme?: any,\n};\n\nexport default (props: Props, providedTheme: any, defaultProps: any = EMPTY_OBJECT) => {\n return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n};\n","// @flow\n\n// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string): string {\n return (\n str\n // Replace all possible CSS selectors\n .replace(escapeRegex, '-')\n\n // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '')\n );\n}\n","// @flow\n/* eslint-disable */\nimport generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default (str: string): string => {\n return generateAlphabeticName(hash(str) >>> 0);\n};\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function isTag(target: $PropertyType): boolean %checks {\n return (\n typeof target === 'string' &&\n (process.env.NODE_ENV !== 'production'\n ? target.charAt(0) === target.charAt(0).toLowerCase()\n : true)\n );\n}\n","/* eslint-disable */\n/**\n mixin-deep; https://github.com/jonschlinkert/mixin-deep\n Inlined such that it will be consistently transpiled to an IE-compatible syntax.\n\n The MIT License (MIT)\n\n Copyright (c) 2014-present, Jon Schlinkert.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\n\nconst isObject = val => {\n return (\n typeof val === 'function' || (typeof val === 'object' && val !== null && !Array.isArray(val))\n );\n};\n\nconst isValidKey = key => {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nfunction mixin(target, val, key) {\n const obj = target[key];\n if (isObject(val) && isObject(obj)) {\n mixinDeep(obj, val);\n } else {\n target[key] = val;\n }\n}\n\nexport default function mixinDeep(target, ...rest) {\n for (const obj of rest) {\n if (isObject(obj)) {\n for (const key in obj) {\n if (isValidKey(key)) {\n mixin(target, obj[key], key);\n }\n }\n }\n }\n\n return target;\n}\n","// @flow\nimport React, { useContext, useMemo, type Element, type Context } from 'react';\nimport throwStyledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\nexport type Theme = { [key: string]: mixed };\n\ntype ThemeArgument = Theme | ((outerTheme?: Theme) => Theme);\n\ntype Props = {\n children?: Element,\n theme: ThemeArgument,\n};\n\nexport const ThemeContext: Context = React.createContext();\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: Theme): Theme {\n if (!theme) {\n return throwStyledError(14);\n }\n\n if (isFunction(theme)) {\n const mergedTheme = theme(outerTheme);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n ) {\n return throwStyledError(7);\n }\n\n return mergedTheme;\n }\n\n if (Array.isArray(theme) || typeof theme !== 'object') {\n return throwStyledError(8);\n }\n\n return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props) {\n const outerTheme = useContext(ThemeContext);\n const themeContext = useMemo(() => mergeTheme(props.theme, outerTheme), [\n props.theme,\n outerTheme,\n ]);\n\n if (!props.children) {\n return null;\n }\n\n return {props.children};\n}\n","// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport hoist from 'hoist-non-react-statics';\nimport React, { createElement, type Ref, useContext } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n Attrs,\n IStyledComponent,\n IStyledStatics,\n RuleSet,\n ShouldForwardProp,\n Target,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport joinStrings from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheet, useStylis } from './StyleSheetManager';\nimport { ThemeContext } from './ThemeProvider';\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(displayName?: string, parentComponentId?: string) {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useResolvedAttrs(theme: any = EMPTY_OBJECT, props: Config, attrs: Attrs) {\n // NOTE: can't memoize this\n // returns [context, resolvedAttrs]\n // where resolvedAttrs is only the things injected by the attrs themselves\n const context = { ...props, theme };\n const resolvedAttrs = {};\n\n attrs.forEach(attrDef => {\n let resolvedAttrDef = attrDef;\n let key;\n\n if (isFunction(resolvedAttrDef)) {\n resolvedAttrDef = resolvedAttrDef(context);\n }\n\n /* eslint-disable guard-for-in */\n for (key in resolvedAttrDef) {\n context[key] = resolvedAttrs[key] =\n key === 'className'\n ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key])\n : resolvedAttrDef[key];\n }\n /* eslint-enable guard-for-in */\n });\n\n return [context, resolvedAttrs];\n}\n\nfunction useInjectedStyle(\n componentStyle: ComponentStyle,\n isStatic: boolean,\n resolvedAttrs: T,\n warnTooManyClasses?: $Call\n) {\n const styleSheet = useStyleSheet();\n const stylis = useStylis();\n\n const className = isStatic\n ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis)\n : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n\n if (process.env.NODE_ENV !== 'production' && !isStatic && warnTooManyClasses) {\n warnTooManyClasses(className);\n }\n\n return className;\n}\n\nfunction useStyledComponentImpl(\n forwardedComponent: IStyledComponent,\n props: Object,\n forwardedRef: Ref,\n isStatic: boolean\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n shouldForwardProp,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, useContext(ThemeContext), defaultProps);\n\n const [context, attrs] = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs);\n\n const generatedClassName = useInjectedStyle(\n componentStyle,\n isStatic,\n context,\n process.env.NODE_ENV !== 'production' ? forwardedComponent.warnTooManyClasses : undefined\n );\n\n const refToForward = forwardedRef;\n\n const elementToBeCreated: Target = attrs.$as || props.$as || attrs.as || props.as || target;\n\n const isTargetTag = isTag(elementToBeCreated);\n const computedProps = attrs !== props ? { ...props, ...attrs } : props;\n const propsForElement = {};\n\n // eslint-disable-next-line guard-for-in\n for (const key in computedProps) {\n if (key[0] === '$' || key === 'as') continue;\n else if (key === 'forwardedAs') {\n propsForElement.as = computedProps[key];\n } else if (\n shouldForwardProp\n ? shouldForwardProp(key, validAttr, elementToBeCreated)\n : isTargetTag\n ? validAttr(key)\n : true\n ) {\n // Don't pass through non HTML tags through to HTML elements\n propsForElement[key] = computedProps[key];\n }\n }\n\n if (props.style && attrs.style !== props.style) {\n propsForElement.style = { ...props.style, ...attrs.style };\n }\n\n propsForElement.className = Array.prototype\n .concat(\n foldedComponentIds,\n styledComponentId,\n generatedClassName !== styledComponentId ? generatedClassName : null,\n props.className,\n attrs.className\n )\n .filter(Boolean)\n .join(' ');\n\n propsForElement.ref = refToForward;\n\n return createElement(elementToBeCreated, propsForElement);\n}\n\nexport default function createStyledComponent(\n target: $PropertyType,\n options: {\n attrs?: Attrs,\n componentId: string,\n displayName?: string,\n parentComponentId?: string,\n shouldForwardProp?: ShouldForwardProp,\n },\n rules: RuleSet\n) {\n const isTargetStyledComp = isStyledComponent(target);\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && ((target: any): IStyledComponent).attrs\n ? Array.prototype.concat(((target: any): IStyledComponent).attrs, attrs).filter(Boolean)\n : attrs;\n\n // eslint-disable-next-line prefer-destructuring\n let shouldForwardProp = options.shouldForwardProp;\n\n if (isTargetStyledComp && target.shouldForwardProp) {\n if (options.shouldForwardProp) {\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, filterFn, elementToBeCreated) =>\n ((((target: any): IStyledComponent).shouldForwardProp: any): ShouldForwardProp)(\n prop,\n filterFn,\n elementToBeCreated\n ) &&\n ((options.shouldForwardProp: any): ShouldForwardProp)(prop, filterFn, elementToBeCreated);\n } else {\n // eslint-disable-next-line prefer-destructuring\n shouldForwardProp = ((target: any): IStyledComponent).shouldForwardProp;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? ((target: Object).componentStyle: ComponentStyle) : undefined\n );\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n const isStatic = componentStyle.isStatic && attrs.length === 0;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent: IStyledComponent;\n\n const forwardRef = (props, ref) =>\n // eslint-disable-next-line\n useStyledComponentImpl(WrappedStyledComponent, props, ref, isStatic);\n\n forwardRef.displayName = displayName;\n\n WrappedStyledComponent = ((React.forwardRef(forwardRef): any): IStyledComponent);\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? Array.prototype.concat(\n ((target: any): IStyledComponent).foldedComponentIds,\n ((target: any): IStyledComponent).styledComponentId\n )\n : EMPTY_ARRAY;\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp\n ? ((target: any): IStyledComponent).target\n : target;\n\n WrappedStyledComponent.withComponent = function withComponent(tag: Target) {\n const { componentId: previousComponentId, ...optionsToCopy } = options;\n\n const newComponentId =\n previousComponentId &&\n `${previousComponentId}-${isTag(tag) ? tag : escape(getComponentName(tag))}`;\n\n const newOptions = {\n ...optionsToCopy,\n attrs: finalAttrs,\n componentId: newComponentId,\n };\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, ((target: any): IStyledComponent).defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n // If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n // cannot have the property changed using an assignment. If using strict mode, attempting that will cause an error. If not using strict\n // mode, attempting that will be silently ignored.\n // However, we can still explicitly shadow the prototype's \"toString\" property by defining a new \"toString\" property on this object.\n Object.defineProperty(WrappedStyledComponent, 'toString', { value: () => `.${WrappedStyledComponent.styledComponentId}` });\n\n if (isCompositeComponent) {\n hoist<\n IStyledStatics,\n $PropertyType,\n { [key: $Keys]: true }\n >(WrappedStyledComponent, ((target: any): $PropertyType), {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n withComponent: true,\n });\n }\n\n return WrappedStyledComponent;\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(\n target: $PropertyType\n): string {\n return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport default function joinStrings(a: ?String, b: ?String): ?String {\n return a && b ? `${a} ${b}` : a || b;\n}\n","// @flow\n// Thanks to ReactDOMFactories for this handy list!\n\nexport default [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdi',\n 'bdo',\n 'big',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'keygen',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n\n // SVG\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'foreignObject',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'marker',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'text',\n 'textPath',\n 'tspan',\n];\n","// @flow\nimport constructWithOptions from './constructWithOptions';\nimport StyledComponent from '../models/StyledComponent';\nimport domElements from '../utils/domElements';\n\nimport type { Target } from '../types';\n\nconst styled = (tag: Target) => constructWithOptions(StyledComponent, tag);\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n styled[domElement] = styled(domElement);\n});\n\nexport default styled;\n","// @flow\nimport { isValidElementType } from 'react-is';\nimport css from './css';\nimport throwStyledError from '../utils/error';\nimport { EMPTY_OBJECT } from '../utils/empties';\n\nimport type { Target } from '../types';\n\nexport default function constructWithOptions(\n componentConstructor: Function,\n tag: Target,\n options: Object = EMPTY_OBJECT\n) {\n if (!isValidElementType(tag)) {\n return throwStyledError(1, String(tag));\n }\n\n /* This is callable directly as a template function */\n // $FlowFixMe: Not typed to avoid destructuring arguments\n const templateFunction = (...args) => componentConstructor(tag, options, css(...args));\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = config =>\n constructWithOptions(componentConstructor, tag, { ...options, ...config });\n\n /* Modify/inject new props at runtime */\n templateFunction.attrs = attrs =>\n constructWithOptions(componentConstructor, tag, {\n ...options,\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n });\n\n return templateFunction;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\n\nexport default class GlobalStyle {\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n constructor(rules: RuleSet, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules);\n\n // pre-register the first instance to ensure global styles\n // load before component ones\n StyleSheet.registerId(this.componentId + 1);\n }\n\n createStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n const flatCSS = flatten(this.rules, executionContext, styleSheet, stylis);\n const css = stylis(flatCSS.join(''), '');\n const id = this.componentId + instance;\n\n // NOTE: We use the id as a name as well, since these rules never change\n styleSheet.insertRules(id, id, css);\n }\n\n removeStyles(instance: number, styleSheet: StyleSheet) {\n styleSheet.clearRules(this.componentId + instance);\n }\n\n renderStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n // NOTE: Remove old styles, then inject the new ones\n this.removeStyles(instance, styleSheet);\n this.createStyles(instance, executionContext, styleSheet, stylis);\n }\n}\n","// @flow\nimport React, { useContext, useLayoutEffect, useRef } from 'react';\nimport { STATIC_EXECUTION_CONTEXT } from '../constants';\nimport GlobalStyle from '../models/GlobalStyle';\nimport { useStyleSheet, useStylis } from '../models/StyleSheetManager';\nimport { ThemeContext } from '../models/ThemeProvider';\nimport type { Interpolation } from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport determineTheme from '../utils/determineTheme';\nimport generateComponentId from '../utils/generateComponentId';\nimport css from './css';\n\ndeclare var __SERVER__: boolean;\n\ntype GlobalStyleComponentPropsType = Object;\n\nexport default function createGlobalStyle(\n strings: Array,\n ...interpolations: Array\n) {\n const rules = css(strings, ...interpolations);\n const styledComponentId = `sc-global-${generateComponentId(JSON.stringify(rules))}`;\n const globalStyle = new GlobalStyle(rules, styledComponentId);\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(styledComponentId);\n }\n\n function GlobalStyleComponent(props: GlobalStyleComponentPropsType) {\n const styleSheet = useStyleSheet();\n const stylis = useStylis();\n const theme = useContext(ThemeContext);\n const instanceRef = useRef(styleSheet.allocateGSInstance(styledComponentId));\n\n const instance = instanceRef.current;\n\n if (process.env.NODE_ENV !== 'production' && React.Children.count(props.children)) {\n // eslint-disable-next-line no-console\n console.warn(\n `The global style component ${styledComponentId} was given child JSX. createGlobalStyle does not render children.`\n );\n }\n\n if (\n process.env.NODE_ENV !== 'production' &&\n rules.some(rule => typeof rule === 'string' && rule.indexOf('@import') !== -1)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n `Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.`\n );\n }\n\n if (styleSheet.server) {\n renderStyles(instance, props, styleSheet, theme, stylis);\n }\n\n if (!__SERVER__) {\n // this conditional is fine because it is compiled away for the relevant builds during minification,\n // resulting in a single unguarded hook call\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n if (!styleSheet.server) {\n renderStyles(instance, props, styleSheet, theme, stylis);\n return () => globalStyle.removeStyles(instance, styleSheet);\n }\n }, [instance, props, styleSheet, theme, stylis]);\n }\n\n return null;\n }\n\n function renderStyles(instance, props, styleSheet, theme, stylis) {\n if (globalStyle.isStatic) {\n globalStyle.renderStyles(instance, STATIC_EXECUTION_CONTEXT, styleSheet, stylis);\n } else {\n const context = {\n ...props,\n theme: determineTheme(props, theme, GlobalStyleComponent.defaultProps),\n };\n\n globalStyle.renderStyles(instance, context, styleSheet, stylis);\n }\n }\n\n // $FlowFixMe\n return React.memo(GlobalStyleComponent);\n}\n","// @flow\n\nimport css from './css';\nimport generateComponentId from '../utils/generateComponentId';\nimport Keyframes from '../models/Keyframes';\n\nimport type { Interpolation, Styles } from '../types';\n\nexport default function keyframes(\n strings: Styles,\n ...interpolations: Array\n): Keyframes {\n /* Warning if you've used keyframes on React Native */\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n '`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.'\n );\n }\n\n const rules = css(strings, ...interpolations).join('');\n const name = generateComponentId(rules);\n return new Keyframes(name, rules);\n}\n","// @flow\n/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport throwStyledError from '../utils/error';\nimport getNonce from '../utils/nonce';\nimport StyleSheet from '../sheet';\nimport StyleSheetManager from './StyleSheetManager';\n\ndeclare var __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n isStreaming: boolean;\n\n instance: StyleSheet;\n\n sealed: boolean;\n\n constructor() {\n this.instance = new StyleSheet({ isServer: true });\n this.sealed = false;\n }\n\n _emitSheetCSS = (): string => {\n const css = this.instance.toString();\n if (!css) return '';\n\n const nonce = getNonce();\n const attrs = [nonce && `nonce=\"${nonce}\"`, `${SC_ATTR}=\"true\"`, `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`];\n const htmlAttr = attrs.filter(Boolean).join(' ');\n\n return ``;\n };\n\n collectStyles(children: any) {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return {children};\n }\n\n getStyleTags = (): string => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return this._emitSheetCSS();\n };\n\n getStyleElement = () => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n const props = {\n [SC_ATTR]: '',\n [SC_ATTR_VERSION]: SC_VERSION,\n dangerouslySetInnerHTML: {\n __html: this.instance.toString(),\n },\n };\n\n const nonce = getNonce();\n if (nonce) {\n (props: any).nonce = nonce;\n }\n\n // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n return [` : ''\n }`;\n\n return (\n (this.tooltipRef = ref)}\n {...ariaProps}\n data-id=\"tooltip\"\n dangerouslySetInnerHTML={{ __html: htmlContent }}\n />\n );\n } else {\n return (\n (this.tooltipRef = ref)}\n data-id=\"tooltip\"\n >\n {style && (\n \n )}\n {content}\n \n );\n }\n }\n}\n\nexport default ReactTooltip;\n","/**\n * Tracking target removing from DOM.\n * It's necessary to hide tooltip when it's target disappears.\n * Otherwise, the tooltip would be shown forever until another target\n * is triggered.\n *\n * If MutationObserver is not available, this feature just doesn't work.\n */\n\n// https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/\nconst getMutationObserverClass = () => {\n return (\n window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n );\n};\n\nexport default function(target) {\n target.prototype.bindRemovalTracker = function() {\n const MutationObserver = getMutationObserverClass();\n if (MutationObserver == null) return;\n\n const observer = new MutationObserver(mutations => {\n for (let m1 = 0; m1 < mutations.length; m1++) {\n const mutation = mutations[m1];\n for (let m2 = 0; m2 < mutation.removedNodes.length; m2++) {\n const element = mutation.removedNodes[m2];\n if (element === this.state.currentTarget) {\n this.hideTooltip();\n return;\n }\n }\n }\n });\n\n observer.observe(window.document, { childList: true, subtree: true });\n\n this.removalTracker = observer;\n };\n\n target.prototype.unbindRemovalTracker = function() {\n if (this.removalTracker) {\n this.removalTracker.disconnect();\n this.removalTracker = null;\n }\n };\n}\n","/**\n * Events that should be bound to the window\n */\nimport CONSTANT from '../constant';\n\nexport default function(target) {\n target.prototype.bindWindowEvents = function(resizeHide) {\n // ReactTooltip.hide\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.addEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide, false);\n\n // ReactTooltip.rebuild\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.addEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild, false);\n\n // ReactTooltip.show\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.addEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow, false);\n\n // Resize\n if (resizeHide) {\n window.removeEventListener('resize', this.onWindowResize);\n window.addEventListener('resize', this.onWindowResize, false);\n }\n };\n\n target.prototype.unbindWindowEvents = function() {\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.removeEventListener('resize', this.onWindowResize);\n };\n\n /**\n * invoked by resize event of window\n */\n target.prototype.onWindowResize = function() {\n if (!this.mount) return;\n this.hideTooltip();\n };\n}\n","/**\n * Util method to judge if it should follow capture model\n */\n\nexport default function(target) {\n target.prototype.isCapture = function(currentTarget) {\n return (\n (currentTarget &&\n currentTarget.getAttribute('data-iscapture') === 'true') ||\n this.props.isCapture ||\n false\n );\n };\n}\n","/**\n * Util method to get effect\n */\n\nexport default function(target) {\n target.prototype.getEffect = function(currentTarget) {\n const dataEffect = currentTarget.getAttribute('data-effect');\n return dataEffect || this.props.effect || 'float';\n };\n}\n","import { v4 as uuid } from 'uuid';\n\nexport function generateUUID() {\n return 't' + uuid();\n}\n","import React, { Component } from 'react';\r\n\r\nexport interface AccordionProps extends React.HTMLAttributes {\r\n allowMultipleOpen?: boolean;\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface AccordionState {\r\n openSections: { [key: number]: boolean };\r\n}\r\n\r\n/**\r\n * A stateful accordion that will always render all its children but only display the active section(s).\r\n *\r\n * The current implementation will key its children by index of enumeration, so changing order after mount\r\n * will lead to broken behaviour.\r\n */\r\nexport class Accordion extends Component {\r\n constructor(props: AccordionProps) {\r\n super(props);\r\n\r\n const openSections: { [key: number]: boolean } = {};\r\n\r\n React.Children.toArray(this.props.children).forEach((child, index) => {\r\n if ((child as React.ReactElement)?.props?.defaultOpen) {\r\n openSections[index] = true;\r\n }\r\n });\r\n\r\n this.state = { openSections };\r\n }\r\n\r\n onClick = (key: number): void => {\r\n const {\r\n props: { allowMultipleOpen },\r\n state: { openSections },\r\n } = this;\r\n\r\n const isOpen = !!openSections[key];\r\n\r\n if (allowMultipleOpen) {\r\n this.setState({\r\n openSections: {\r\n ...openSections,\r\n [key]: !isOpen,\r\n },\r\n });\r\n } else {\r\n this.setState({\r\n openSections: {\r\n [key]: !isOpen,\r\n },\r\n });\r\n }\r\n };\r\n\r\n render(): JSX.Element {\r\n const accordionSections = React.Children.map(\r\n this.props.children,\r\n (child, index) => {\r\n return React.cloneElement(child as React.ReactElement, {\r\n key: index,\r\n isOpen: !!this.state.openSections[index],\r\n onClick: () => this.onClick(index),\r\n });\r\n }\r\n );\r\n return
{accordionSections}
;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Alone: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\n\r\nexport interface SvgIconProps {\r\n className?: string;\r\n fill?: string;\r\n onClick?: (event: React.MouseEvent) => void;\r\n size?: string;\r\n style?: React.CSSProperties | undefined;\r\n}\r\n\r\nexport const AloneChild: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const ArrowDown: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const ArrowLeft: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const ArrowRight: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const ArrowUp: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Caret: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const CheckMark: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const CheckMarkBold: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Close: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\n\r\ninterface DatePickerProps {\r\n className?: string;\r\n fill?: string;\r\n onClick?: (event: React.MouseEvent) => void;\r\n text?: string;\r\n showTodaysDate?: boolean;\r\n size?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const DatePicker: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n showTodaysDate = false,\r\n size = '1em',\r\n style = {},\r\n text = undefined,\r\n}): JSX.Element => {\r\n let number = (\r\n \r\n );\r\n if (showTodaysDate === true || typeof text !== 'undefined') {\r\n const date = new Date();\r\n const dayOfMonth = date.getDate();\r\n const datepickerContent = text || dayOfMonth;\r\n number = (\r\n \r\n \r\n {datepickerContent}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n \r\n {/* */}\r\n \r\n {number}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const DatePicker2: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Decrease: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Download: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Error: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const FlagDk: React.FC = ({\r\n className = '',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const FlagFi: React.FC = ({\r\n className = '',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const FlagNo: React.FC = ({\r\n className = '',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const FlagSe: React.FC = ({\r\n className = '',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const FlagUs: React.FC = ({\r\n className = '',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Increase: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Info: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Logo: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Married: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const MarriedChild: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const NoChange: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Plus: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Refresh: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { SvgIconProps } from './alone_child';\r\n\r\nexport const Search: React.FC = ({\r\n className = '',\r\n fill = 'currentColor',\r\n onClick,\r\n size = '1em',\r\n style = {},\r\n}) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { BrandingColors } from '../../theme/BrandingProfile';\r\nimport { Alone } from './IconTypes/alone';\r\nimport { AloneChild } from './IconTypes/alone_child';\r\nimport { ArrowDown } from './IconTypes/arrow_down';\r\nimport { ArrowLeft } from './IconTypes/arrow_left';\r\nimport { ArrowRight } from './IconTypes/arrow_right';\r\nimport { ArrowUp } from './IconTypes/arrow_up';\r\nimport { Caret } from './IconTypes/caret';\r\nimport { CheckMark } from './IconTypes/checkmark';\r\nimport { CheckMarkBold } from './IconTypes/checkmark_bold';\r\nimport { Close } from './IconTypes/close';\r\nimport { DatePicker } from './IconTypes/datepicker';\r\nimport { DatePicker2 } from './IconTypes/datepicker2';\r\nimport { Decrease } from './IconTypes/decrease';\r\nimport { Download } from './IconTypes/download';\r\nimport { Error } from './IconTypes/error';\r\nimport { FlagDk } from './IconTypes/flag_dk';\r\nimport { FlagFi } from './IconTypes/flag_fi';\r\nimport { FlagNo } from './IconTypes/flag_no';\r\nimport { FlagSe } from './IconTypes/flag_se';\r\nimport { FlagUs } from './IconTypes/flag_us';\r\nimport { Increase } from './IconTypes/increase';\r\nimport { Info } from './IconTypes/info';\r\nimport { Logo } from './IconTypes/logo';\r\nimport { Married } from './IconTypes/married';\r\nimport { MarriedChild } from './IconTypes/married_child';\r\nimport { NoChange } from './IconTypes/no_change';\r\nimport { Plus } from './IconTypes/plus';\r\nimport { Refresh } from './IconTypes/refresh';\r\nimport { Search } from './IconTypes/search';\r\n\r\nexport type IconName =\r\n | 'alone'\r\n | 'alone_child'\r\n | 'arrow_down'\r\n | 'arrow_left'\r\n | 'arrow_right'\r\n | 'arrow_up'\r\n | 'caret'\r\n | 'checkmark'\r\n | 'checkmark_bold'\r\n | 'close'\r\n | 'datepicker'\r\n | 'datepicker2'\r\n | 'decrease'\r\n | 'download'\r\n | 'error'\r\n | 'flag_dk'\r\n | 'flag_fi'\r\n | 'flag_no'\r\n | 'flag_se'\r\n | 'flag_us'\r\n | 'increase'\r\n | 'info'\r\n | 'logo'\r\n | 'married'\r\n | 'married_child'\r\n | 'no_change'\r\n | 'plus'\r\n | 'refresh'\r\n | 'search';\r\n\r\nexport interface IconProps {\r\n fill?: string;\r\n /**\r\n * Provide custom styling to be applied to the icon.\r\n */\r\n className?: string;\r\n name?: IconName;\r\n size?: string;\r\n /**\r\n * Provide onClick function to icon.\r\n */\r\n onClick?: (event: React.MouseEvent) => void;\r\n style?: React.CSSProperties | undefined;\r\n showTodaysDate?: boolean;\r\n theme?: BrandingColors;\r\n}\r\n\r\nexport const Icon: React.FC = (props) => {\r\n let icon;\r\n\r\n switch (props.name) {\r\n case 'alone':\r\n icon = ;\r\n break;\r\n case 'alone_child':\r\n icon = ;\r\n break;\r\n case 'arrow_down':\r\n icon = ;\r\n break;\r\n case 'arrow_left':\r\n icon = ;\r\n break;\r\n case 'arrow_right':\r\n icon = ;\r\n break;\r\n case 'arrow_up':\r\n icon = ;\r\n break;\r\n case 'caret':\r\n icon = ;\r\n break;\r\n case 'checkmark':\r\n icon = ;\r\n break;\r\n case 'checkmark_bold':\r\n icon = ;\r\n break;\r\n case 'close':\r\n icon = ;\r\n break;\r\n case 'datepicker':\r\n icon = ;\r\n break;\r\n case 'datepicker2':\r\n icon = ;\r\n break;\r\n case 'decrease':\r\n icon = ;\r\n break;\r\n case 'download':\r\n icon = ;\r\n break;\r\n case 'error':\r\n icon = ;\r\n break;\r\n case 'flag_dk':\r\n icon = ;\r\n break;\r\n case 'flag_fi':\r\n icon = ;\r\n break;\r\n case 'flag_no':\r\n icon = ;\r\n break;\r\n case 'flag_se':\r\n icon = ;\r\n break;\r\n case 'flag_us':\r\n icon = ;\r\n break;\r\n case 'increase':\r\n icon = ;\r\n break;\r\n case 'info':\r\n icon = ;\r\n break;\r\n case 'logo':\r\n icon = ;\r\n break;\r\n case 'married':\r\n icon = ;\r\n break;\r\n case 'married_child':\r\n icon = ;\r\n break;\r\n case 'no_change':\r\n icon = ;\r\n break;\r\n case 'plus':\r\n icon = ;\r\n break;\r\n case 'refresh':\r\n icon = ;\r\n break;\r\n case 'search':\r\n icon = ;\r\n break;\r\n default:\r\n icon =
;\r\n }\r\n\r\n return icon;\r\n};\r\n","import React from 'react';\r\nimport style from 'styled-components';\r\nimport { Icon } from '../Icon';\r\n\r\nexport interface AccordionSectionProps\r\n extends React.HTMLAttributes {\r\n children: React.ReactNode;\r\n className?: string;\r\n defaultOpen?: boolean;\r\n label: string;\r\n onClick?: (event: React.MouseEvent) => void;\r\n isOpen?: boolean;\r\n}\r\n\r\nexport const AccordionSection: React.FC = ({\r\n children,\r\n className,\r\n defaultOpen,\r\n isOpen,\r\n label,\r\n onClick,\r\n}) => (\r\n \r\n \r\n {label}\r\n \r\n \r\n
{children}
\r\n \r\n);\r\n\r\nconst StyledAccordionSection = style.div<{ isOpen: boolean }>`\r\n background-color: transparent;\r\n border: none;\r\n padding: 0;\r\n position: relative;\r\n\r\n > span {\r\n cursor: pointer;\r\n display: block;\r\n font-weight: 700;\r\n padding: 9px 15px 9px 0;\r\n font-size: 18px;\r\n line-height: 32px;\r\n text-decoration: none;\r\n transition: color .3s ease;\r\n\r\n svg.plus {\r\n position: absolute;\r\n right: 5px;\r\n top: 16px;\r\n\r\n backface-visibility: hidden;\r\n transform-origin: 8px 8px;\r\n transform: rotate(${(props) => (props.isOpen ? '45deg' : '90deg')});\r\n transition: .3s ease-in-out;\r\n }\r\n }\r\n\r\n > div {\r\n position: relative;\r\n overflow: hidden;\r\n height: ${(props) => (props.isOpen ? '100%' : '0')};\r\n visibility: ${(props) => (props.isOpen ? 'visible' : 'hidden')};\r\n }\r\n`;\r\n","export enum AlertType {\r\n INFO = 1,\r\n WARNING = 2,\r\n}\r\n","import React, { PropsWithChildren } from 'react';\r\nimport styled from 'styled-components';\r\nimport { AlertType } from './AlertType';\r\n\r\nexport interface AlertProps {\r\n /**\r\n * \tProvide custom styling to be applied to the alert.\r\n */\r\n className?: string;\r\n title?: string;\r\n type?: AlertType;\r\n}\r\n\r\ninterface StyledAlertProps {\r\n backgroundColor: string;\r\n borderColor: string;\r\n color: string;\r\n}\r\n\r\nconst getAlertStyle = (type: AlertType): StyledAlertProps => {\r\n switch (type) {\r\n case AlertType.WARNING:\r\n return {\r\n backgroundColor: '#fcf8e3', // Todo: Move to variables file\r\n borderColor: '#faebcc', // Todo: Move to variables file\r\n color: '#8a6d3b', // Todo: Move to variables file\r\n };\r\n case AlertType.INFO:\r\n default:\r\n return {\r\n backgroundColor: '#d9edf7', // Todo: Move to variables file\r\n borderColor: '#bce8f1', // Todo: Move to variables file\r\n color: '#31708f', // Todo: Move to variables file\r\n };\r\n }\r\n};\r\n\r\n/**\r\n * Alert component used to display messages in a highlighted manner.\r\n */\r\nconst Alert: React.FC> = ({\r\n title,\r\n type = AlertType.INFO,\r\n className,\r\n ...props\r\n}) => {\r\n const titleObject = title && {title};\r\n return (\r\n \r\n {titleObject}\r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nconst AlertTitle = styled.h4`\r\n margin-top: 0;\r\n`;\r\n\r\nconst StyledAlert = styled.div<{ cssData: StyledAlertProps }>`\r\n background-color: ${(props) => props.cssData.backgroundColor};\r\n display: block;\r\n\r\n padding: 15px; /*Todo: Move to variables file */\r\n margin-bottom: 24px;\r\n border: 1px solid transparent;\r\n border-radius: 0; /*Todo: Move to variables file */\r\n\r\n background-color: ${(props) => props.cssData.backgroundColor};\r\n border-color: ${(props) => props.cssData.borderColor};\r\n color: ${(props) => props.cssData.color};\r\n`;\r\n\r\nexport { AlertType, Alert };\r\n","import styled from 'styled-components';\r\n\r\nexport interface BaseButtonCssData {\r\n lineHeight: React.ReactText;\r\n padding: React.ReactText;\r\n fontSize: React.ReactText;\r\n}\r\n\r\nexport interface BaseButtonProps {\r\n cssData: BaseButtonCssData;\r\n}\r\n\r\nexport const Round = styled.button`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n border: 2px solid ${(props) => props.theme.accent};\r\n border-radius: 100px;\r\n background-color: transparent;\r\n color: ${(props) => props.theme.accent};\r\n height: 32px;\r\n line-height: 32px;\r\n outline: none;\r\n position: relative;\r\n width: 32px;\r\n\r\n :hover {\r\n background-color: ${(props) => props.theme.primaryDarker};\r\n border-color: ${(props) => props.theme.primaryDarker};\r\n color: ${(props) => props.theme.textLight};\r\n }\r\n\r\n svg {\r\n color: currentColor;\r\n display: flex;\r\n }\r\n`;\r\n\r\nexport const Close = styled(Round)`\r\n svg.close {\r\n color: currentColor;\r\n display: flex;\r\n }\r\n`;\r\n\r\nexport const CloseWithLabel = styled.button`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n\r\n background-color: transparent;\r\n border: 2px solid ${(props) => props.theme.accent};\r\n border-radius: 100px;\r\n color: ${(props) => props.theme.accent};\r\n font-size: 14px;\r\n font-weight: 600;\r\n height: 40px;\r\n line-height: 36px;\r\n outline: none;\r\n padding: 0 20px;\r\n\r\n :hover {\r\n background-color: ${(props) => props.theme.primaryDarker};\r\n border-color: ${(props) => props.theme.primaryDarker};\r\n color: ${(props) => props.theme.textLight};\r\n }\r\n\r\n svg.close {\r\n color: currentColor;\r\n font-size: 12px;\r\n margin-left: 8px;\r\n }\r\n`;\r\n\r\nexport const BaseButton = styled.button`\r\n align-items: center;\r\n background-color: ${(props) => props.theme.primary};\r\n border: 1px solid transparent;\r\n border-radius: 0;\r\n border-color: ${(props) => props.theme.primary};\r\n color: ${(props) => props.theme.textLight};\r\n cursor: pointer;\r\n display: inline-block;\r\n display: inline-flex;\r\n font-family: ${(props) => props.theme.fonts.body};\r\n font-size: ${(props) => props.cssData.fontSize};\r\n font-weight: 600;\r\n justify-content: center;\r\n line-height: ${(props) => props.cssData.lineHeight};\r\n margin-bottom: 1px;\r\n padding: ${(props) => props.cssData.padding};\r\n text-align: center;\r\n touch-action: manipulation;\r\n user-select: none;\r\n vertical-align: middle;\r\n white-space: nowrap;\r\n\r\n :hover {\r\n background-color: ${(props) => props.theme.primaryDarker};\r\n border-color: ${(props) => props.theme.primaryDarker};\r\n color: ${(props) => props.theme.textLight};\r\n }\r\n\r\n :disabled {\r\n background-color: ${(props) => props.theme.border};\r\n border-color: ${(props) => props.theme.border};\r\n color: ${(props) => props.theme.backgroundAlternate};\r\n cursor: not-allowed;\r\n opacity: 0.65;\r\n }\r\n\r\n > svg {\r\n display: inline-flex;\r\n }\r\n\r\n .svg-icon {\r\n display: inline-flex;\r\n align-self: center;\r\n position: relative;\r\n height: 1em;\r\n width: 1em;\r\n svg {\r\n height: 100%;\r\n width: 100%;\r\n }\r\n }\r\n`;\r\n\r\nexport const Primary = styled(BaseButton)`\r\n background-color: ${(props) => props.theme.primary};\r\n border-color: ${(props) => props.theme.primary};\r\n color: ${(props) => props.theme.textLight};\r\n\r\n :hover {\r\n background-color: ${(props) => props.theme.primaryDarker};\r\n border-color: ${(props) => props.theme.primaryDarker};\r\n color: ${(props) => props.theme.textLight};\r\n }\r\n\r\n :disabled {\r\n background-color: ${(props) => props.theme.border};\r\n border-color: ${(props) => props.theme.border};\r\n color: ${(props) => props.theme.backgroundAlternate};\r\n cursor: not-allowed;\r\n opacity: 0.65;\r\n }\r\n\r\n svg {\r\n color: ${(props) => props.theme.textLight};\r\n }\r\n`;\r\n\r\nexport const Secondary = styled(BaseButton)`\r\n background-color: ${(props) => props.theme.background};\r\n border-color: ${(props) => props.theme.border};\r\n color: ${(props) => props.theme.primary};\r\n\r\n :hover {\r\n background-color: ${(props) => props.theme.primaryDarker};\r\n border-color: ${(props) => props.theme.primaryDarker};\r\n color: ${(props) => props.theme.textLight};\r\n }\r\n\r\n :disabled {\r\n background-color: ${(props) => props.theme.background};\r\n border-color: ${(props) => props.theme.border};\r\n color: ${(props) => props.theme.border};\r\n cursor: not-allowed;\r\n opacity: 0.65;\r\n }\r\n`;\r\n","import React, { CSSProperties } from 'react';\r\nimport {\r\n BaseButtonProps,\r\n Close,\r\n CloseWithLabel,\r\n Primary,\r\n Round,\r\n Secondary,\r\n} from './styles';\r\n\r\nimport { Icon } from '../Icon';\r\n\r\nexport enum ButtonStyle {\r\n PRIMARY = 1,\r\n SECONDARY = 2,\r\n CLOSE = 3,\r\n ROUND = 4,\r\n}\r\n\r\nexport enum ButtonSize {\r\n TINY = 1,\r\n SMALL = 2,\r\n MEDIUM = 3,\r\n LARGE = 4,\r\n}\r\n\r\nexport interface CloseButtonProps\r\n extends BaseButtonProps,\r\n React.ButtonHTMLAttributes {\r\n disabled?: boolean;\r\n}\r\n\r\nconst CloseButton: React.FC = (props) => {\r\n const { cssData, children, ...passthroughProps } = props;\r\n if (children) {\r\n return (\r\n \r\n {children}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes {\r\n buttonStyle?: ButtonStyle;\r\n size?: ButtonSize;\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * Button component that comes in three styles and four sizes.\r\n */\r\nexport const Button: React.FC = ({\r\n size = ButtonSize.MEDIUM,\r\n buttonStyle = ButtonStyle.PRIMARY,\r\n ...props\r\n}) => {\r\n const cssData = getSize(size, props.style);\r\n\r\n switch (buttonStyle) {\r\n case ButtonStyle.CLOSE:\r\n return ;\r\n case ButtonStyle.ROUND:\r\n return ;\r\n case ButtonStyle.SECONDARY:\r\n return ;\r\n case ButtonStyle.PRIMARY:\r\n default:\r\n return ;\r\n }\r\n};\r\n\r\nconst getSize = (size: ButtonSize, style?: CSSProperties) => {\r\n let fontSize: number;\r\n let lineHeight = 1;\r\n let padding = '';\r\n\r\n switch (size) {\r\n case ButtonSize.TINY:\r\n fontSize = 14;\r\n lineHeight = 1.5;\r\n padding = '1px 5px';\r\n break;\r\n case ButtonSize.SMALL:\r\n fontSize = 14;\r\n lineHeight = 1.5;\r\n padding = '5px 10px';\r\n break;\r\n case ButtonSize.MEDIUM:\r\n fontSize = 16;\r\n lineHeight = 1.5;\r\n padding = '6px 12px';\r\n break;\r\n case ButtonSize.LARGE:\r\n fontSize = 16;\r\n lineHeight = 1.5;\r\n padding = '16.5px 30px';\r\n break;\r\n }\r\n\r\n return {\r\n fontSize: `${fontSize}px`,\r\n lineHeight: style && style.lineHeight ? style.lineHeight : lineHeight,\r\n padding,\r\n };\r\n};\r\n","export function randomizedId() {\r\n return Math.random().toString(36).substr(2, 9);\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport interface StyledCheckboxProps {\r\n hasChildren: boolean;\r\n}\r\n\r\nexport const StyledCheckbox = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n height: 30px;\r\n position: relative;\r\n\r\n > input {\r\n margin: 0;\r\n opacity: 0;\r\n width: 30px;\r\n }\r\n > input + label {\r\n align-self: center;\r\n display: flex;\r\n font-size: 16px;\r\n font-weight: 600;\r\n line-height: 30px;\r\n padding-left: ${(props) => (props.hasChildren ? '8px' : 0)};\r\n\r\n &:before {\r\n border: 1px solid #aaa;\r\n box-sizing: content-box;\r\n content: '';\r\n height: 28px;\r\n left: 0;\r\n position: absolute;\r\n top: 0;\r\n width: 28px;\r\n }\r\n\r\n > svg.checkmark-bold {\r\n color: #fff;\r\n font-size: 22px;\r\n left: 3.5px;\r\n position: absolute;\r\n top: 5px;\r\n }\r\n }\r\n\r\n > input:not(:checked) + label {\r\n > svg.checkmark-bold {\r\n opacity: 0;\r\n }\r\n }\r\n > input:disabled:not(:checked) + label {\r\n &:before {\r\n background-color: #ddd;\r\n border-color: #bbb;\r\n box-shadow: none;\r\n }\r\n }\r\n > input:checked + label {\r\n &:before {\r\n background: ${(props) => props.theme.primary};\r\n opacity: 1;\r\n }\r\n }\r\n > input:checked + label {\r\n > svg.checkmark-bold {\r\n color: #fff;\r\n opacity: 1;\r\n }\r\n }\r\n > input:disabled:checked + label {\r\n > svg.checkmark-bold {\r\n color: #999;\r\n }\r\n }\r\n > input:disabled + label {\r\n color: #aaa;\r\n }\r\n > input:checked:focus + label {\r\n &:before {\r\n border: 1px solid ${(props) => props.theme.primaryDarker};\r\n }\r\n }\r\n > input:not(:checked):focus + label {\r\n &:before {\r\n border: 1px solid ${(props) => props.theme.primary};\r\n }\r\n }\r\n\r\n &.left {\r\n padding-left: 50px;\r\n }\r\n`;\r\n","import styled from 'styled-components';\r\n\r\nexport const ContentWrapper = styled.div`\r\n margin: 0 auto;\r\n\r\n @media (min-width: 768px) {\r\n width: 750px;\r\n }\r\n @media (min-width: 992px) {\r\n width: 970px;\r\n }\r\n @media (min-width: 1200px) {\r\n width: 1170px;\r\n }\r\n @media (min-width: 1440px) {\r\n width: 1380px;\r\n }\r\n`;\r\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'mindre än en sekund',\n other: 'mindre än {{count}} sekunder'\n },\n xSeconds: {\n one: 'en sekund',\n other: '{{count}} sekunder'\n },\n halfAMinute: 'en halv minut',\n lessThanXMinutes: {\n one: 'mindre än en minut',\n other: 'mindre än {{count}} minuter'\n },\n xMinutes: {\n one: 'en minut',\n other: '{{count}} minuter'\n },\n aboutXHours: {\n one: 'ungefär en timme',\n other: 'ungefär {{count}} timmar'\n },\n xHours: {\n one: 'en timme',\n other: '{{count}} timmar'\n },\n xDays: {\n one: 'en dag',\n other: '{{count}} dagar'\n },\n aboutXWeeks: {\n one: 'ungefär en vecka',\n other: 'ungefär {{count}} vecka'\n },\n xWeeks: {\n one: 'en vecka',\n other: '{{count}} vecka'\n },\n aboutXMonths: {\n one: 'ungefär en månad',\n other: 'ungefär {{count}} månader'\n },\n xMonths: {\n one: 'en månad',\n other: '{{count}} månader'\n },\n aboutXYears: {\n one: 'ungefär ett år',\n other: 'ungefär {{count}} år'\n },\n xYears: {\n one: 'ett år',\n other: '{{count}} år'\n },\n overXYears: {\n one: 'över ett år',\n other: 'över {{count}} år'\n },\n almostXYears: {\n one: 'nästan ett år',\n other: 'nästan {{count}} år'\n }\n};\nvar wordMapping = ['noll', 'en', 'två', 'tre', 'fyra', 'fem', 'sex', 'sju', 'åtta', 'nio', 'tio', 'elva', 'tolv'];\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n if (options && options.onlyNumeric) {\n result = tokenValue.other.replace('{{count}}', String(count));\n } else {\n result = tokenValue.other.replace('{{count}}', count < 13 ? wordMapping[count] : String(count));\n }\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'om ' + result;\n } else {\n return result + ' sedan';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'y-MM-dd'\n};\nvar timeFormats = {\n full: \"'kl'. HH:mm:ss zzzz\",\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'kl.' {{time}}\",\n long: \"{{date}} 'kl.' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'i' EEEE's kl.' p\",\n yesterday: \"'igår kl.' p\",\n today: \"'idag kl.' p\",\n tomorrow: \"'imorgon kl.' p\",\n nextWeek: \"EEEE 'kl.' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['f.Kr.', 'e.Kr.'],\n abbreviated: ['f.Kr.', 'e.Kr.'],\n wide: ['före Kristus', 'efter Kristus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1:a kvartalet', '2:a kvartalet', '3:e kvartalet', '4:e kvartalet']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n wide: ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n short: ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'],\n abbreviated: ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'],\n wide: ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag']\n}; // https://www.unicode.org/cldr/charts/32/summary/sv.html#1888\n\nvar dayPeriodValues = {\n narrow: {\n am: 'fm',\n pm: 'em',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'morg.',\n afternoon: 'efterm.',\n evening: 'kväll',\n night: 'natt'\n },\n abbreviated: {\n am: 'f.m.',\n pm: 'e.m.',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'morgon',\n afternoon: 'efterm.',\n evening: 'kväll',\n night: 'natt'\n },\n wide: {\n am: 'förmiddag',\n pm: 'eftermiddag',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'morgon',\n afternoon: 'eftermiddag',\n evening: 'kväll',\n night: 'natt'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'fm',\n pm: 'em',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på efterm.',\n evening: 'på kvällen',\n night: 'på natten'\n },\n abbreviated: {\n am: 'fm',\n pm: 'em',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på efterm.',\n evening: 'på kvällen',\n night: 'på natten'\n },\n wide: {\n am: 'fm',\n pm: 'em',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morgonen',\n afternoon: 'på eftermiddagen',\n evening: 'på kvällen',\n night: 'på natten'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n case 2:\n return number + ':a';\n }\n }\n\n return number + ':e';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(:a|:e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(f\\.? ?Kr\\.?|f\\.? ?v\\.? ?t\\.?|e\\.? ?Kr\\.?|v\\.? ?t\\.?)/i,\n abbreviated: /^(f\\.? ?Kr\\.?|f\\.? ?v\\.? ?t\\.?|e\\.? ?Kr\\.?|v\\.? ?t\\.?)/i,\n wide: /^(före Kristus|före vår tid|efter Kristus|vår tid)/i\n};\nvar parseEraPatterns = {\n any: [/^f/i, /^[ev]/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](:a|:e)? kvartalet/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar[s]?|apr|maj|jun[i]?|jul[i]?|aug|sep|okt|nov|dec)\\.?/i,\n wide: /^(januari|februari|mars|april|maj|juni|juli|augusti|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^maj/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtofl]/i,\n short: /^(sö|må|ti|on|to|fr|lö)/i,\n abbreviated: /^(sön|mån|tis|ons|tors|fre|lör)/i,\n wide: /^(söndag|måndag|tisdag|onsdag|torsdag|fredag|lördag)/i\n};\nvar parseDayPatterns = {\n any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^([fe]\\.?\\s?m\\.?|midn(att)?|midd(ag)?|(på) (morgonen|eftermiddagen|kvällen|natten))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^f/i,\n pm: /^e/i,\n midnight: /^midn/i,\n noon: /^midd/i,\n morning: /morgon/i,\n afternoon: /eftermiddag/i,\n evening: /kväll/i,\n night: /natt/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Swedish locale.\n * @language Swedish\n * @iso-639-2 swe\n * @author Johannes Ulén [@ejulen]{@link https://github.com/ejulen}\n * @author Alexander Nanberg [@alexandernanberg]{@link https://github.com/alexandernanberg}\n * @author Henrik Andersson [@limelights]{@link https://github.com/limelights}\n */\n\nvar locale = {\n code: 'sv',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'mindre end ét sekund',\n other: 'mindre end {{count}} sekunder'\n },\n xSeconds: {\n one: '1 sekund',\n other: '{{count}} sekunder'\n },\n halfAMinute: 'ét halvt minut',\n lessThanXMinutes: {\n one: 'mindre end ét minut',\n other: 'mindre end {{count}} minutter'\n },\n xMinutes: {\n one: '1 minut',\n other: '{{count}} minutter'\n },\n aboutXHours: {\n one: 'cirka 1 time',\n other: 'cirka {{count}} timer'\n },\n xHours: {\n one: '1 time',\n other: '{{count}} timer'\n },\n xDays: {\n one: '1 dag',\n other: '{{count}} dage'\n },\n aboutXWeeks: {\n one: 'cirka 1 uge',\n other: 'cirka {{count}} uger'\n },\n xWeeks: {\n one: '1 uge',\n other: '{{count}} uger'\n },\n aboutXMonths: {\n one: 'cirka 1 måned',\n other: 'cirka {{count}} måneder'\n },\n xMonths: {\n one: '1 måned',\n other: '{{count}} måneder'\n },\n aboutXYears: {\n one: 'cirka 1 år',\n other: 'cirka {{count}} år'\n },\n xYears: {\n one: '1 år',\n other: '{{count}} år'\n },\n overXYears: {\n one: 'over 1 år',\n other: 'over {{count}} år'\n },\n almostXYears: {\n one: 'næsten 1 år',\n other: 'næsten {{count}} år'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'om ' + result;\n } else {\n return result + ' siden';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"EEEE 'den' d. MMMM y\",\n long: 'd. MMMM y',\n medium: 'd. MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'kl'. {{time}}\",\n long: \"{{date}} 'kl'. {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'sidste' eeee 'kl.' p\",\n yesterday: \"'i går kl.' p\",\n today: \"'i dag kl.' p\",\n tomorrow: \"'i morgen kl.' p\",\n nextWeek: \"'på' eeee 'kl.' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['fvt', 'vt'],\n abbreviated: ['f.v.t.', 'v.t.'],\n wide: ['før vesterlandsk tidsregning', 'vesterlandsk tidsregning']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['1. kvt.', '2. kvt.', '3. kvt.', '4. kvt.'],\n wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n wide: ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december']\n}; // Note that 'Days - abbreviated - Formatting' has periods at the end.\n// https://www.unicode.org/cldr/charts/32/summary/da.html#1760\n// This makes grammatical sense in danish, as most abbreviations have periods.\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n short: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],\n abbreviated: ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'],\n wide: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'morgen',\n afternoon: 'eftermiddag',\n evening: 'aften',\n night: 'nat'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'morgen',\n afternoon: 'eftermiddag',\n evening: 'aften',\n night: 'nat'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'morgen',\n afternoon: 'eftermiddag',\n evening: 'aften',\n night: 'nat'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'om morgenen',\n afternoon: 'om eftermiddagen',\n evening: 'om aftenen',\n night: 'om natten'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'om morgenen',\n afternoon: 'om eftermiddagen',\n evening: 'om aftenen',\n night: 'om natten'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'om morgenen',\n afternoon: 'om eftermiddagen',\n evening: 'om aftenen',\n night: 'om natten'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(fKr|fvt|eKr|vt)/i,\n abbreviated: /^(f\\.Kr\\.?|f\\.v\\.t\\.?|e\\.Kr\\.?|v\\.t\\.)/i,\n wide: /^(f.Kr.|før vesterlandsk tidsregning|e.Kr.|vesterlandsk tidsregning)/i\n};\nvar parseEraPatterns = {\n any: [/^f/i, /^(v|e)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234]. kvt\\./i,\n wide: /^[1234]\\.? kvartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan.|feb.|mar.|apr.|maj|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,\n wide: /^(januar|februar|marts|april|maj|juni|juli|august|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^maj/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtofl]/i,\n short: /^(søn.|man.|tir.|ons.|tor.|fre.|lør.)/i,\n abbreviated: /^(søn|man|tir|ons|tor|fre|lør)/i,\n wide: /^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^o/i, /^t/i, /^f/i, /^l/i],\n any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /midnat/i,\n noon: /middag/i,\n morning: /morgen/i,\n afternoon: /eftermiddag/i,\n evening: /aften/i,\n night: /nat/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Danish locale.\n * @language Danish\n * @iso-639-2 dan\n * @author Mathias Wøbbe [@MathiasKandelborg]{@link https://github.com/MathiasKandelborg}\n * @author Anders B. Hansen [@Andersbiha]{@link https://github.com/Andersbiha}\n * @author [@kgram]{@link https://github.com/kgram}\n * @author [@stefanbugge]{@link https://github.com/stefanbugge}\n */\n\nvar locale = {\n code: 'da',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'mindre enn ett sekund',\n other: 'mindre enn {{count}} sekunder'\n },\n xSeconds: {\n one: 'ett sekund',\n other: '{{count}} sekunder'\n },\n halfAMinute: 'et halvt minutt',\n lessThanXMinutes: {\n one: 'mindre enn ett minutt',\n other: 'mindre enn {{count}} minutter'\n },\n xMinutes: {\n one: 'ett minutt',\n other: '{{count}} minutter'\n },\n aboutXHours: {\n one: 'omtrent en time',\n other: 'omtrent {{count}} timer'\n },\n xHours: {\n one: 'en time',\n other: '{{count}} timer'\n },\n xDays: {\n one: 'en dag',\n other: '{{count}} dager'\n },\n aboutXWeeks: {\n one: 'omtrent en uke',\n other: 'omtrent {{count}} uker'\n },\n xWeeks: {\n one: 'en uke',\n other: '{{count}} uker'\n },\n aboutXMonths: {\n one: 'omtrent en måned',\n other: 'omtrent {{count}} måneder'\n },\n xMonths: {\n one: 'en måned',\n other: '{{count}} måneder'\n },\n aboutXYears: {\n one: 'omtrent ett år',\n other: 'omtrent {{count}} år'\n },\n xYears: {\n one: 'ett år',\n other: '{{count}} år'\n },\n overXYears: {\n one: 'over ett år',\n other: 'over {{count}} år'\n },\n almostXYears: {\n one: 'nesten ett år',\n other: 'nesten {{count}} år'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'om ' + result;\n } else {\n return result + ' siden';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d. MMMM y',\n long: 'd. MMMM y',\n medium: 'd. MMM y',\n short: 'dd.MM.y'\n};\nvar timeFormats = {\n full: \"'kl'. HH:mm:ss zzzz\",\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'kl.' {{time}}\",\n long: \"{{date}} 'kl.' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'forrige' eeee 'kl.' p\",\n yesterday: \"'i går kl.' p\",\n today: \"'i dag kl.' p\",\n tomorrow: \"'i morgen kl.' p\",\n nextWeek: \"EEEE 'kl.' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['f.Kr.', 'e.Kr.'],\n abbreviated: ['f.Kr.', 'e.Kr.'],\n wide: ['før Kristus', 'etter Kristus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mars', 'apr.', 'mai', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'],\n wide: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n short: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],\n abbreviated: ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'],\n wide: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på etterm.',\n evening: 'på kvelden',\n night: 'på natten'\n },\n abbreviated: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på etterm.',\n evening: 'på kvelden',\n night: 'på natten'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morgenen',\n afternoon: 'på ettermiddagen',\n evening: 'på kvelden',\n night: 'på natten'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n abbreviated: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n wide: /^(før Kristus|før vår tid|etter Kristus|vår tid)/i\n};\nvar parseEraPatterns = {\n any: [/^f/i, /^e/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? kvartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\\.?/i,\n wide: /^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^aug/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtofl]/i,\n short: /^(sø|ma|ti|on|to|fr|lø)/i,\n abbreviated: /^(søn|man|tir|ons|tor|fre|lør)/i,\n wide: /^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i\n};\nvar parseDayPatterns = {\n any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten)|[ap])/i,\n any: /^([ap]\\.?\\s?m\\.?|midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a(\\.?\\s?m\\.?)?$/i,\n pm: /^p(\\.?\\s?m\\.?)?$/i,\n midnight: /^midn/i,\n noon: /^midd/i,\n morning: /morgen/i,\n afternoon: /ettermiddag/i,\n evening: /kveld/i,\n night: /natt/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Norwegian Bokmål locale.\n * @language Norwegian Bokmål\n * @iso-639-2 nob\n * @author Hans-Kristian Koren [@Hanse]{@link https://github.com/Hanse}\n * @author Mikolaj Grzyb [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}\n * @author Dag Stuan [@dagstuan]{@link https://github.com/dagstuan}\n */\n\nvar locale = {\n code: 'nb',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'mindre enn eitt sekund',\n other: 'mindre enn {{count}} sekund'\n },\n xSeconds: {\n one: 'eitt sekund',\n other: '{{count}} sekund'\n },\n halfAMinute: 'eit halvt minutt',\n lessThanXMinutes: {\n one: 'mindre enn eitt minutt',\n other: 'mindre enn {{count}} minutt'\n },\n xMinutes: {\n one: 'eitt minutt',\n other: '{{count}} minutt'\n },\n aboutXHours: {\n one: 'omtrent ein time',\n other: 'omtrent {{count}} timar'\n },\n xHours: {\n one: 'ein time',\n other: '{{count}} timar'\n },\n xDays: {\n one: 'ein dag',\n other: '{{count}} dagar'\n },\n aboutXWeeks: {\n one: 'omtrent ei veke',\n other: 'omtrent {{count}} veker'\n },\n xWeeks: {\n one: 'ei veke',\n other: '{{count}} veker'\n },\n aboutXMonths: {\n one: 'omtrent ein månad',\n other: 'omtrent {{count}} månader'\n },\n xMonths: {\n one: 'ein månad',\n other: '{{count}} månader'\n },\n aboutXYears: {\n one: 'omtrent eitt år',\n other: 'omtrent {{count}} år'\n },\n xYears: {\n one: 'eitt år',\n other: '{{count}} år'\n },\n overXYears: {\n one: 'over eitt år',\n other: 'over {{count}} år'\n },\n almostXYears: {\n one: 'nesten eitt år',\n other: 'nesten {{count}} år'\n }\n};\nvar wordMapping = ['null', 'ein', 'to', 'tre', 'fire', 'fem', 'seks', 'sju', 'åtte', 'ni', 'ti', 'elleve', 'tolv'];\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n if (options && options.onlyNumeric) {\n result = tokenValue.other.replace('{{count}}', String(count));\n } else {\n result = tokenValue.other.replace('{{count}}', count < 13 ? wordMapping[count] : String(count));\n }\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'om ' + result;\n } else {\n return result + ' sidan';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d. MMMM y',\n long: 'd. MMMM y',\n medium: 'd. MMM y',\n short: 'dd.MM.y'\n};\nvar timeFormats = {\n full: \"'kl'. HH:mm:ss zzzz\",\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'kl.' {{time}}\",\n long: \"{{date}} 'kl.' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'førre' eeee 'kl.' p\",\n yesterday: \"'i går kl.' p\",\n today: \"'i dag kl.' p\",\n tomorrow: \"'i morgon kl.' p\",\n nextWeek: \"EEEE 'kl.' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['f.Kr.', 'e.Kr.'],\n abbreviated: ['f.Kr.', 'e.Kr.'],\n wide: ['før Kristus', 'etter Kristus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mars', 'apr.', 'mai', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'],\n wide: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n short: ['su', 'må', 'ty', 'on', 'to', 'fr', 'lau'],\n abbreviated: ['sun', 'mån', 'tys', 'ons', 'tor', 'fre', 'laur'],\n wide: ['sundag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på etterm.',\n evening: 'på kvelden',\n night: 'på natta'\n },\n abbreviated: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på etterm.',\n evening: 'på kvelden',\n night: 'på natta'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morgonen',\n afternoon: 'på ettermiddagen',\n evening: 'på kvelden',\n night: 'på natta'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n abbreviated: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n wide: /^(før Kristus|før vår tid|etter Kristus|vår tid)/i\n};\nvar parseEraPatterns = {\n any: [/^f/i, /^e/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? kvartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\\.?/i,\n wide: /^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^aug/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtofl]/i,\n short: /^(su|må|ty|on|to|fr|la)/i,\n abbreviated: /^(sun|mån|tys|ons|tor|fre|laur)/i,\n wide: /^(sundag|måndag|tysdag|onsdag|torsdag|fredag|laurdag)/i\n};\nvar parseDayPatterns = {\n any: [/^s/i, /^m/i, /^ty/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta)|[ap])/i,\n any: /^([ap]\\.?\\s?m\\.?|midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a(\\.?\\s?m\\.?)?$/i,\n pm: /^p(\\.?\\s?m\\.?)?$/i,\n midnight: /^midn/i,\n noon: /^midd/i,\n morning: /morgon/i,\n afternoon: /ettermiddag/i,\n evening: /kveld/i,\n night: /natt/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Norwegian Nynorsk locale.\n * @language Norwegian Nynorsk\n * @iso-639-2 nno\n * @author Mats Byrkjeland [@draperunner]{@link https://github.com/draperunner}\n */\n\nvar locale = {\n code: 'nn',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","function futureSeconds(text) {\n return text.replace(/sekuntia?/, 'sekunnin');\n}\n\nfunction futureMinutes(text) {\n return text.replace(/minuuttia?/, 'minuutin');\n}\n\nfunction futureHours(text) {\n return text.replace(/tuntia?/, 'tunnin');\n}\n\nfunction futureDays(text) {\n return text.replace(/päivää?/, 'päivän');\n}\n\nfunction futureWeeks(text) {\n return text.replace(/(viikko|viikkoa)/, 'viikon');\n}\n\nfunction futureMonths(text) {\n return text.replace(/(kuukausi|kuukautta)/, 'kuukauden');\n}\n\nfunction futureYears(text) {\n return text.replace(/(vuosi|vuotta)/, 'vuoden');\n}\n\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'alle sekunti',\n other: 'alle {{count}} sekuntia',\n futureTense: futureSeconds\n },\n xSeconds: {\n one: 'sekunti',\n other: '{{count}} sekuntia',\n futureTense: futureSeconds\n },\n halfAMinute: {\n one: 'puoli minuuttia',\n other: 'puoli minuuttia',\n futureTense: function futureTense(_text) {\n return 'puolen minuutin';\n }\n },\n lessThanXMinutes: {\n one: 'alle minuutti',\n other: 'alle {{count}} minuuttia',\n futureTense: futureMinutes\n },\n xMinutes: {\n one: 'minuutti',\n other: '{{count}} minuuttia',\n futureTense: futureMinutes\n },\n aboutXHours: {\n one: 'noin tunti',\n other: 'noin {{count}} tuntia',\n futureTense: futureHours\n },\n xHours: {\n one: 'tunti',\n other: '{{count}} tuntia',\n futureTense: futureHours\n },\n xDays: {\n one: 'päivä',\n other: '{{count}} päivää',\n futureTense: futureDays\n },\n aboutXWeeks: {\n one: 'noin viikko',\n other: 'noin {{count}} viikkoa',\n futureTense: futureWeeks\n },\n xWeeks: {\n one: 'viikko',\n other: '{{count}} viikkoa',\n futureTense: futureWeeks\n },\n aboutXMonths: {\n one: 'noin kuukausi',\n other: 'noin {{count}} kuukautta',\n futureTense: futureMonths\n },\n xMonths: {\n one: 'kuukausi',\n other: '{{count}} kuukautta',\n futureTense: futureMonths\n },\n aboutXYears: {\n one: 'noin vuosi',\n other: 'noin {{count}} vuotta',\n futureTense: futureYears\n },\n xYears: {\n one: 'vuosi',\n other: '{{count}} vuotta',\n futureTense: futureYears\n },\n overXYears: {\n one: 'yli vuosi',\n other: 'yli {{count}} vuotta',\n futureTense: futureYears\n },\n almostXYears: {\n one: 'lähes vuosi',\n other: 'lähes {{count}} vuotta',\n futureTense: futureYears\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var tokenValue = formatDistanceLocale[token];\n var result = count === 1 ? tokenValue.one : tokenValue.other.replace('{{count}}', String(count));\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return tokenValue.futureTense(result) + ' kuluttua';\n } else {\n return result + ' sitten';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'eeee d. MMMM y',\n long: 'd. MMMM y',\n medium: 'd. MMM y',\n short: 'd.M.y'\n};\nvar timeFormats = {\n full: 'HH.mm.ss zzzz',\n long: 'HH.mm.ss z',\n medium: 'HH.mm.ss',\n short: 'HH.mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'klo' {{time}}\",\n long: \"{{date}} 'klo' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'viime' eeee 'klo' p\",\n yesterday: \"'eilen klo' p\",\n today: \"'tänään klo' p\",\n tomorrow: \"'huomenna klo' p\",\n nextWeek: \"'ensi' eeee 'klo' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['eaa.', 'jaa.'],\n abbreviated: ['eaa.', 'jaa.'],\n wide: ['ennen ajanlaskun alkua', 'jälkeen ajanlaskun alun']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. kvartaali', '2. kvartaali', '3. kvartaali', '4. kvartaali']\n};\nvar monthValues = {\n narrow: ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'],\n abbreviated: ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'],\n wide: ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu']\n};\nvar formattingMonthValues = {\n narrow: monthValues.narrow,\n abbreviated: monthValues.abbreviated,\n wide: ['tammikuuta', 'helmikuuta', 'maaliskuuta', 'huhtikuuta', 'toukokuuta', 'kesäkuuta', 'heinäkuuta', 'elokuuta', 'syyskuuta', 'lokakuuta', 'marraskuuta', 'joulukuuta']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'K', 'T', 'P', 'L'],\n short: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],\n abbreviated: ['sunn.', 'maan.', 'tiis.', 'kesk.', 'torst.', 'perj.', 'la'],\n wide: ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai']\n};\nvar formattingDayValues = {\n narrow: dayValues.narrow,\n short: dayValues.short,\n abbreviated: dayValues.abbreviated,\n wide: ['sunnuntaina', 'maanantaina', 'tiistaina', 'keskiviikkona', 'torstaina', 'perjantaina', 'lauantaina']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'ap',\n pm: 'ip',\n midnight: 'keskiyö',\n noon: 'keskipäivä',\n morning: 'ap',\n afternoon: 'ip',\n evening: 'illalla',\n night: 'yöllä'\n },\n abbreviated: {\n am: 'ap',\n pm: 'ip',\n midnight: 'keskiyö',\n noon: 'keskipäivä',\n morning: 'ap',\n afternoon: 'ip',\n evening: 'illalla',\n night: 'yöllä'\n },\n wide: {\n am: 'ap',\n pm: 'ip',\n midnight: 'keskiyöllä',\n noon: 'keskipäivällä',\n morning: 'aamupäivällä',\n afternoon: 'iltapäivällä',\n evening: 'illalla',\n night: 'yöllä'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayValues,\n defaultFormattingWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(e|j)/i,\n abbreviated: /^(eaa.|jaa.)/i,\n wide: /^(ennen ajanlaskun alkua|jälkeen ajanlaskun alun)/i\n};\nvar parseEraPatterns = {\n any: [/^e/i, /^j/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234]\\.? kvartaali/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[thmkeslj]/i,\n abbreviated: /^(tammi|helmi|maalis|huhti|touko|kesä|heinä|elo|syys|loka|marras|joulu)/i,\n wide: /^(tammikuu|helmikuu|maaliskuu|huhtikuu|toukokuu|kesäkuu|heinäkuu|elokuu|syyskuu|lokakuu|marraskuu|joulukuu)(ta)?/i\n};\nvar parseMonthPatterns = {\n narrow: [/^t/i, /^h/i, /^m/i, /^h/i, /^t/i, /^k/i, /^h/i, /^e/i, /^s/i, /^l/i, /^m/i, /^j/i],\n any: [/^ta/i, /^hel/i, /^maa/i, /^hu/i, /^to/i, /^k/i, /^hei/i, /^e/i, /^s/i, /^l/i, /^mar/i, /^j/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtkpl]/i,\n short: /^(su|ma|ti|ke|to|pe|la)/i,\n abbreviated: /^(sunn.|maan.|tiis.|kesk.|torst.|perj.|la)/i,\n wide: /^(sunnuntai|maanantai|tiistai|keskiviikko|torstai|perjantai|lauantai)(na)?/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^k/i, /^t/i, /^p/i, /^l/i],\n any: [/^s/i, /^m/i, /^ti/i, /^k/i, /^to/i, /^p/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(ap|ip|keskiyö|keskipäivä|aamupäivällä|iltapäivällä|illalla|yöllä)/i,\n any: /^(ap|ip|keskiyöllä|keskipäivällä|aamupäivällä|iltapäivällä|illalla|yöllä)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^ap/i,\n pm: /^ip/i,\n midnight: /^keskiyö/i,\n noon: /^keskipäivä/i,\n morning: /aamupäivällä/i,\n afternoon: /iltapäivällä/i,\n evening: /illalla/i,\n night: /yöllä/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Finnish locale.\n * @language Finnish\n * @iso-639-2 fin\n * @author Pyry-Samuli Lahti [@Pyppe]{@link https://github.com/Pyppe}\n * @author Edo Rivai [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}\n * @author Samu Juvonen [@sjuvonen]{@link https://github.com/sjuvonen}\n */\n\nvar locale = {\n code: 'fi',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'minder dan een seconde',\n other: 'minder dan {{count}} seconden'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} seconden'\n },\n halfAMinute: 'een halve minuut',\n lessThanXMinutes: {\n one: 'minder dan een minuut',\n other: 'minder dan {{count}} minuten'\n },\n xMinutes: {\n one: 'een minuut',\n other: '{{count}} minuten'\n },\n aboutXHours: {\n one: 'ongeveer 1 uur',\n other: 'ongeveer {{count}} uur'\n },\n xHours: {\n one: '1 uur',\n other: '{{count}} uur'\n },\n xDays: {\n one: '1 dag',\n other: '{{count}} dagen'\n },\n aboutXWeeks: {\n one: 'ongeveer 1 week',\n other: 'ongeveer {{count}} weken'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weken'\n },\n aboutXMonths: {\n one: 'ongeveer 1 maand',\n other: 'ongeveer {{count}} maanden'\n },\n xMonths: {\n one: '1 maand',\n other: '{{count}} maanden'\n },\n aboutXYears: {\n one: 'ongeveer 1 jaar',\n other: 'ongeveer {{count}} jaar'\n },\n xYears: {\n one: '1 jaar',\n other: '{{count}} jaar'\n },\n overXYears: {\n one: 'meer dan 1 jaar',\n other: 'meer dan {{count}} jaar'\n },\n almostXYears: {\n one: 'bijna 1 jaar',\n other: 'bijna {{count}} jaar'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'over ' + result;\n } else {\n return result + ' geleden';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd-MM-y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'om' {{time}}\",\n long: \"{{date}} 'om' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'afgelopen' eeee 'om' p\",\n yesterday: \"'gisteren om' p\",\n today: \"'vandaag om' p\",\n tomorrow: \"'morgen om' p\",\n nextWeek: \"eeee 'om' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.C.', 'n.C.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['voor Christus', 'na Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['K1', 'K2', 'K3', 'K4'],\n wide: ['1e kwartaal', '2e kwartaal', '3e kwartaal', '4e kwartaal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n wide: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december']\n};\nvar dayValues = {\n narrow: ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'],\n short: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n abbreviated: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n wide: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + 'e';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)e?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^([vn]\\.? ?C\\.?)/,\n abbreviated: /^([vn]\\. ?Chr\\.?)/,\n wide: /^((voor|na) Christus)/\n};\nvar parseEraPatterns = {\n any: [/^v/, /^n/]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^K[1234]/i,\n wide: /^[1234]e kwartaal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,\n wide: /^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^jan/i, /^feb/i, /^m(r|a)/i, /^apr/i, /^mei/i, /^jun/i, /^jul/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]\n};\nvar matchDayPatterns = {\n narrow: /^[zmdwv]/i,\n short: /^(zo|ma|di|wo|do|vr|za)/i,\n abbreviated: /^(zon|maa|din|woe|don|vri|zat)/i,\n wide: /^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i\n};\nvar parseDayPatterns = {\n narrow: [/^z/i, /^m/i, /^d/i, /^w/i, /^d/i, /^v/i, /^z/i],\n any: [/^zo/i, /^ma/i, /^di/i, /^wo/i, /^do/i, /^vr/i, /^za/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^am/i,\n pm: /^pm/i,\n midnight: /^middernacht/i,\n noon: /^het middaguur/i,\n morning: /ochtend/i,\n afternoon: /middag/i,\n evening: /avond/i,\n night: /nacht/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Dutch locale.\n * @language Dutch\n * @iso-639-2 nld\n * @author Jorik Tangelder [@jtangelder]{@link https://github.com/jtangelder}\n * @author Ruben Stolk [@rubenstolk]{@link https://github.com/rubenstolk}\n * @author Lode Vanhove [@bitcrumb]{@link https://github.com/bitcrumb}\n * @author Edo Rivai [@edorivai]{@link https://github.com/edorivai}\n * @author Niels Keurentjes [@curry684]{@link https://github.com/curry684}\n * @author Stefan Vermaas [@stefanvermaas]{@link https://github.com/stefanvermaas}\n */\n\nvar locale = {\n code: 'nl',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n result[iteratee(value, key, object)] = value;\n });\n return result;\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = mapKeys;\n","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2018, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.chroma = factory());\n}(this, (function () { 'use strict';\n\n var limit = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var clip_rgb = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) {\n var name = list[i];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var unpack = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var last = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb,\n \tlimit: limit,\n \ttype: type,\n \tunpack: unpack,\n \tlast: last,\n \tPI: PI,\n \tTWOPI: PI*2,\n \tPITHIRD: PI/3,\n \tDEG2RAD: PI / 180,\n \tRAD2DEG: 180 / PI\n };\n\n var input = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$1 = utils.last;\n var clip_rgb$1 = utils.clip_rgb;\n var type$1 = utils.type;\n\n\n var Color = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$1(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$1(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!input.sorted) {\n input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; });\n input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (input.format[mode]) {\n var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$1(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color.prototype.toString = function toString () {\n if (type$1(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color;\n\n var chroma = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) ));\n };\n\n chroma.Color = Color_1;\n chroma.version = '2.0.3';\n\n var chroma_1 = chroma;\n\n var unpack$1 = utils.unpack;\n var max = Math.max;\n\n var rgb2cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$1(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max(r,max(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk;\n\n var unpack$2 = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$2(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var unpack$3 = utils.unpack;\n var type$2 = utils.type;\n\n\n\n Color_1.prototype.cmyk = function() {\n return rgb2cmyk_1(this._rgb);\n };\n\n chroma_1.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) ));\n };\n\n input.format.cmyk = cmyk2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'cmyk');\n if (type$2(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$4 = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$4(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css;\n\n var unpack$5 = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$5(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl;\n\n var unpack$6 = utils.unpack;\n var last$3 = utils.last;\n\n\n var round = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$6(args, 'rgba');\n var mode = last$3(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css_1(rgb2hsl_1(rgba), mode);\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8})$/;\n\n var hex2rgb = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb;\n\n var unpack$7 = utils.unpack;\n var round$1 = Math.round;\n\n var hsl2rgb = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$7(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb;\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$2 = Math.round;\n\n var css2rgb = function (css) {\n css = css.toLowerCase().trim();\n // named X11 colors\n if (w3cx11_1[css]) {\n return hex2rgb_1(w3cx11_1[css]);\n }\n var m;\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb_1(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb_1(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb;\n\n var type$3 = utils.type;\n\n\n\n\n Color_1.prototype.css = function(mode) {\n return rgb2css_1(this._rgb, mode);\n };\n\n chroma_1.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) ));\n };\n\n input.format.css = css2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) {\n return 'css';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n input.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$8(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma_1.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) ));\n };\n\n Color_1.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$9 = utils.unpack;\n\n var rgb2hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$9(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg;\n\n var unpack$a = utils.unpack;\n var floor = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$a(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$b = utils.unpack;\n var type$4 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hcg = function() {\n return rgb2hcg_1(this._rgb);\n };\n\n chroma_1.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) ));\n };\n\n input.format.hcg = hcg2rgb_1;\n\n input.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'hcg');\n if (type$4(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$c = utils.unpack;\n var last$4 = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$c(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last$4(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex;\n\n var type$5 = utils.type;\n\n\n\n\n Color_1.prototype.hex = function(mode) {\n return rgb2hex_1(this._rgb, mode);\n };\n\n chroma_1.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) ));\n };\n\n input.format.hex = hex2rgb_1;\n input.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$5(h) === 'string' && [3,4,6,7,8,9].includes(h.length)) {\n return 'hex';\n }\n }\n });\n\n var unpack$d = utils.unpack;\n var TWOPI = utils.TWOPI;\n var min = Math.min;\n var sqrt = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi;\n\n var unpack$e = utils.unpack;\n var limit$1 = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$e(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit$1(i*r*3);\n g = limit$1(i*g*3);\n b = limit$1(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$f = utils.unpack;\n var type$6 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsi = function() {\n return rgb2hsi_1(this._rgb);\n };\n\n chroma_1.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) ));\n };\n\n input.format.hsi = hsi2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'hsi');\n if (type$6(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$g = utils.unpack;\n var type$7 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsl = function() {\n return rgb2hsl_1(this._rgb);\n };\n\n chroma_1.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) ));\n };\n\n input.format.hsl = hsl2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'hsl');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$h = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$h(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv = rgb2hsl$1;\n\n var unpack$i = utils.unpack;\n var floor$1 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$i(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$1(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$j = utils.unpack;\n var type$8 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma_1.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) ));\n };\n\n input.format.hsv = hsv2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$j(args, 'hsv');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var unpack$k = utils.unpack;\n var pow = Math.pow;\n\n var rgb2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$k(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > labConstants.t3) { return pow(t, 1 / 3); }\n return t / labConstants.t2 + labConstants.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab;\n\n var unpack$l = utils.unpack;\n var pow$1 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = labConstants.Yn * lab_xyz(y);\n x = labConstants.Xn * lab_xyz(x);\n z = labConstants.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0)\n };\n\n var lab2rgb_1 = lab2rgb;\n\n var unpack$m = utils.unpack;\n var type$9 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lab = function() {\n return rgb2lab_1(this._rgb);\n };\n\n chroma_1.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) ));\n };\n\n input.format.lab = lab2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'lab');\n if (type$9(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$n = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$1 = Math.sqrt;\n var atan2 = Math.atan2;\n var round$4 = Math.round;\n\n var lab2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$n(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$1(a * a + b * b);\n var h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round$4(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch;\n\n var unpack$o = utils.unpack;\n\n\n\n var rgb2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab_1(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch_1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch;\n\n var unpack$p = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin = Math.sin;\n var cos$1 = Math.cos;\n\n var lch2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$p(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$1(h) * c, sin(h) * c]\n };\n\n var lch2lab_1 = lch2lab;\n\n var unpack$q = utils.unpack;\n\n\n\n var lch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab_1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb_1 (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb;\n\n var unpack$r = utils.unpack;\n\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$r(args, 'hcl').reverse();\n return lch2rgb_1.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$s = utils.unpack;\n var type$a = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); };\n Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); };\n\n chroma_1.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) ));\n };\n chroma_1.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) ));\n };\n\n input.format.lch = lch2rgb_1;\n input.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$s(args, m);\n if (type$a(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n var type$b = utils.type;\n\n\n\n\n\n Color_1.prototype.name = function() {\n var hex = rgb2hex_1(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11_1[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$t = utils.unpack;\n\n var rgb2num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$t(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num;\n\n var type$c = utils.type;\n\n var num2rgb = function (num) {\n if (type$c(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var type$d = utils.type;\n\n\n\n Color_1.prototype.num = function() {\n return rgb2num_1(this._rgb);\n };\n\n chroma_1.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) ));\n };\n\n input.format.num = num2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var unpack$u = utils.unpack;\n var type$e = utils.type;\n var round$5 = Math.round;\n\n Color_1.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$5);\n };\n\n Color_1.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$5(v)) : v;\n });\n };\n\n chroma_1.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) ));\n };\n\n input.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$u(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$u(args, 'rgba');\n if (type$e(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log = Math.log;\n\n var temperature2rgb = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n\n var unpack$v = utils.unpack;\n var round$6 = Math.round;\n\n var rgb2temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$v(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb_1(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round$6(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature;\n\n Color_1.prototype.temp =\n Color_1.prototype.kelvin =\n Color_1.prototype.temperature = function() {\n return rgb2temperature_1(this._rgb);\n };\n\n chroma_1.temp =\n chroma_1.kelvin =\n chroma_1.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) ));\n };\n\n input.format.temp =\n input.format.kelvin =\n input.format.temperature = temperature2rgb_1;\n\n var type$f = utils.type;\n\n Color_1.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$f(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n Color_1.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color_1.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= labConstants.Kn * amount;\n \treturn new Color_1(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color_1.prototype.darker = Color_1.prototype.darken;\n Color_1.prototype.brighter = Color_1.prototype.brighten;\n\n Color_1.prototype.get = function(mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var type$g = utils.type;\n var pow$2 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color_1.prototype.luminance = function(lum) {\n if (lum !== undefined && type$g(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color_1([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color_1([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb();\n return new Color_1(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4);\n };\n\n var interpolator = {};\n\n var type$h = utils.type;\n\n\n var mix = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$h(col1) !== 'object') { col1 = new Color_1(col1); }\n if (type$h(col2) !== 'object') { col2 = new Color_1(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n Color_1.prototype.mix =\n Color_1.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n Color_1.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n Color_1.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += labConstants.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color_1(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var type$i = utils.type;\n\n Color_1.prototype.set = function(mc, value, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) {\n if (type$i(value) == 'string') {\n switch(value.charAt(0)) {\n case '+': src[i] += +value; break;\n case '-': src[i] += +value; break;\n case '*': src[i] *= +(value.substr(1)); break;\n case '/': src[i] /= +(value.substr(1)); break;\n default: src[i] = +value;\n }\n } else if (type$i(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color_1(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var rgb$1 = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.rgb = rgb$1;\n\n var sqrt$2 = Math.sqrt;\n var pow$3 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color_1(\n sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f),\n sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f),\n sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.lrgb = lrgb;\n\n var lab$1 = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator.lab = lab$1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1-(hue0+360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1+360-hue0;\n } else{\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1-lbv0);\n return new Color_1([hue, sat, lbv], m);\n };\n\n var lch$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator.lch = lch$1;\n interpolator.hcl = lch$1;\n\n var num$1 = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color_1(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator.num = num$1;\n\n var hcg$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator.hcg = hcg$1;\n\n var hsi$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator.hsi = hsi$1;\n\n var hsl$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator.hsl = hsl$1;\n\n var hsv$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator.hsv = hsv$1;\n\n var clip_rgb$2 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$3 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$1 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode) {\n if ( mode === void 0 ) mode='lrgb';\n\n var l = colors.length;\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color_1(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors) {\n var l = colors.length;\n var f = 1/l;\n var xyz = [0,0,0,0];\n for (var i = 0, list = colors; i < list.length; i += 1) {\n var col = list[i];\n\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$3(xyz[0]);\n xyz[1] = sqrt$3(xyz[1]);\n xyz[2] = sqrt$3(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color_1(clip_rgb$2(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n\n var type$j = utils.type;\n\n var pow$5 = Math.pow;\n\n var scale = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma_1('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$j(colors) === 'string' && chroma_1.brewer &&\n chroma_1.brewer[colors.toLowerCase()]) {\n colors = chroma_1.brewer[colors.toLowerCase()];\n }\n if (type$j(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tmap = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n if (!bypassMap) {\n t = tmap(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$5(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$j(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$j(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma_1(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$j(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma_1.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma_1.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$j(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma_1[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma_1(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n\n\n\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color_1(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 5) {\n var I0 = bezier(colors.slice(0, 3));\n var I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t*2);\n } else {\n return I1((t-0.5)*2);\n }\n };\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n\n\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma_1(top).rgb();\n var c1 = chroma_1(bottom).rgb();\n return chroma_1.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken$1 = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken$1));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$k = utils.type;\n var clip_rgb$3 = utils.clip_rgb;\n var TWOPI$2 = utils.TWOPI;\n var pow$6 = Math.pow;\n var sin$2 = Math.sin;\n var cos$3 = Math.cos;\n\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$k(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI$2 * (((start+120)/360) + (rotations * fract));\n var l = pow$6(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$3(a);\n var sin_a = sin$2(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma_1(clip_rgb$3([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$k(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$k(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma_1.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var digits = '0123456789abcdef';\n\n var floor$2 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$2(random() * 16));\n }\n return new Color_1(code, 'hex');\n };\n\n var log$1 = Math.log;\n var pow$7 = Math.pow;\n var floor$3 = Math.floor;\n var abs = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log$1(min);\n var max_log = Math.LOG10E * log$1(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var sqrt$4 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var abs$1 = Math.abs;\n var cos$4 = Math.cos;\n var PI$2 = Math.PI;\n\n var deltaE = function(a, b, L, C) {\n if ( L === void 0 ) L=1;\n if ( C === void 0 ) C=1;\n\n // Delta E (CMC)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n a = new Color_1(a);\n b = new Color_1(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var c1 = sqrt$4((a1 * a1) + (b1 * b1));\n var c2 = sqrt$4((a2 * a2) + (b2 * b2));\n var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1));\n var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638;\n var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2;\n while (h1 < 0) { h1 += 360; }\n while (h1 >= 360) { h1 -= 360; }\n var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0)));\n var c4 = c1 * c1 * c1 * c1;\n var f = sqrt$4(c4 / (c4 + 1900.0));\n var sh = sc * (((f * t) + 1.0) - f);\n var delL = L1 - L2;\n var delC = c1 - c2;\n var delA = a1 - a2;\n var delB = b1 - b2;\n var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC);\n var v1 = delL / (L * sl);\n var v2 = delC / (C * sc);\n var v3 = sh;\n return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3)));\n };\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color_1(a);\n b = new Color_1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n\n\n\n\n var scales = {\n \tcool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) {\n var key = list$1[i$1];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma_1.average = average;\n chroma_1.bezier = bezier_1;\n chroma_1.blend = blend_1;\n chroma_1.cubehelix = cubehelix;\n chroma_1.mix = chroma_1.interpolate = mix;\n chroma_1.random = random_1;\n chroma_1.scale = scale;\n\n // other utility methods\n chroma_1.analyze = analyze_1.analyze;\n chroma_1.contrast = contrast;\n chroma_1.deltaE = deltaE;\n chroma_1.distance = distance;\n chroma_1.limits = analyze_1.limits;\n chroma_1.valid = valid;\n\n // scale\n chroma_1.scales = scales;\n\n // colors\n chroma_1.colors = w3cx11_1;\n chroma_1.brewer = colorbrewer_1;\n\n var chroma_js = chroma_1;\n\n return chroma_js;\n\n})));\n","import chroma, { Color } from 'chroma-js';\r\n\r\nfunction removeSemicolon(colors: string[]): string[] {\r\n return colors.map((color) => color.replace(';', ''));\r\n}\r\n\r\nfunction getContrasting(baseColors: string[], count: number): Color[] {\r\n const colorGroups = getColorGroups(\r\n count,\r\n removeSemicolon(baseColors),\r\n 'asManyAsPossible'\r\n );\r\n const colorArray: Color[] = [];\r\n for (let i = 0, nr = count; i < nr; i++) {\r\n const color = chroma(\r\n (colorGroups[i % colorGroups.length] as any).shift()\r\n );\r\n colorArray.push(color);\r\n }\r\n\r\n return colorArray;\r\n}\r\n\r\nfunction getHarmonious(baseColors, count: number) {\r\n const colorGroups = getColorGroups(count, removeSemicolon(baseColors));\r\n // ie11 do not support flat\r\n const colorArray = flatten(colorGroups);\r\n return colorArray.map((color) => chroma(color));\r\n}\r\n\r\nfunction flatten(arr) {\r\n return arr.reduce(function (flat, toFlatten) {\r\n return flat.concat(\r\n Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten\r\n );\r\n }, []);\r\n}\r\n\r\nfunction tintRgb(\r\n rgb: [number, number, number],\r\n tintFactor: number\r\n): [number, number, number] {\r\n const r = rgb[0] + (255 - rgb[0]) * tintFactor;\r\n const g = rgb[1] + (255 - rgb[1]) * tintFactor;\r\n const b = rgb[2] + (255 - rgb[2]) * tintFactor;\r\n return [Math.min(r, 255), Math.min(g, 255), Math.min(b, 255)];\r\n}\r\n\r\nfunction getColorGroups(\r\n count: number,\r\n colors: string[],\r\n nrColorGroups = 'asFewAsPossible'\r\n): string[][] {\r\n const maxColorsPerGroup = 4;\r\n const maxNrColors = colors.length * maxColorsPerGroup;\r\n if (count > maxNrColors) {\r\n throw console.error(\r\n `ERROR in getColorGroups, must be less than ${maxNrColors} colors`\r\n );\r\n }\r\n\r\n const nrColorGroupsToUse =\r\n nrColorGroups === 'asFewAsPossible'\r\n ? Math.ceil(count / maxColorsPerGroup)\r\n : Math.min(colors.length, count);\r\n\r\n // distribute the colors evenly\r\n const nrColorsFromEachGroup: number[] = [];\r\n for (let i = 0, nr = count; i < nr; i++) {\r\n nrColorsFromEachGroup[i % nrColorGroupsToUse] =\r\n typeof nrColorsFromEachGroup[i % nrColorGroupsToUse] === 'undefined'\r\n ? 1\r\n : nrColorsFromEachGroup[i % nrColorGroupsToUse] + 1;\r\n }\r\n const tintDistance = 1 / (maxColorsPerGroup + 1); // 1/(4 + 1) = 0.2\r\n\r\n // create color groups\r\n const colorGroups: string[][] = [];\r\n for (let i = 0, nr = nrColorGroupsToUse; i < nr; i++) {\r\n const c = chroma(colors[i]);\r\n const tintedColors: string[] = [];\r\n for (let j = 0, jNr = maxColorsPerGroup; j < jNr; j++) {\r\n // tintDistance used should be tintDistance*0, tintDistance*2, tintDistance*3, tintDistance*4\r\n // .. or [color, color40, color60, color80 for 4 colors]\r\n tintedColors.push(\r\n chroma(\r\n tintRgb(c.rgb(), j === 0 ? 0 : tintDistance * (j + 1))\r\n ).hex()\r\n );\r\n }\r\n colorGroups[i] = tintedColors.slice(0, nrColorsFromEachGroup[i]);\r\n }\r\n return colorGroups;\r\n}\r\n\r\nexport { getContrasting, getHarmonious, tintRgb };\r\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","import t,{Component as e}from\"react\";import r from\"prop-types\";import n from\"react-fast-compare\";import i from\"invariant\";import o from\"shallowequal\";function a(){return a=Object.assign||function(t){for(var e=1;e=0||(i[r]=t[r]);return i}var l={BASE:\"base\",BODY:\"body\",HEAD:\"head\",HTML:\"html\",LINK:\"link\",META:\"meta\",NOSCRIPT:\"noscript\",SCRIPT:\"script\",STYLE:\"style\",TITLE:\"title\",FRAGMENT:\"Symbol(react.fragment)\"},p={rel:[\"amphtml\",\"canonical\",\"alternate\"]},f={type:[\"application/ld+json\"]},d={charset:\"\",name:[\"robots\",\"description\"],property:[\"og:type\",\"og:title\",\"og:url\",\"og:image\",\"og:image:alt\",\"og:description\",\"twitter:url\",\"twitter:title\",\"twitter:description\",\"twitter:image\",\"twitter:image:alt\",\"twitter:card\",\"twitter:site\"]},h=Object.keys(l).map(function(t){return l[t]}),m={accesskey:\"accessKey\",charset:\"charSet\",class:\"className\",contenteditable:\"contentEditable\",contextmenu:\"contextMenu\",\"http-equiv\":\"httpEquiv\",itemprop:\"itemProp\",tabindex:\"tabIndex\"},y=Object.keys(m).reduce(function(t,e){return t[m[e]]=e,t},{}),T=function(t,e){for(var r=t.length-1;r>=0;r-=1){var n=t[r];if(Object.prototype.hasOwnProperty.call(n,e))return n[e]}return null},g=function(t){var e=T(t,l.TITLE),r=T(t,\"titleTemplate\");if(Array.isArray(e)&&(e=e.join(\"\")),r&&e)return r.replace(/%s/g,function(){return e});var n=T(t,\"defaultTitle\");return e||n||void 0},b=function(t){return T(t,\"onChangeClientState\")||function(){}},v=function(t,e){return e.filter(function(e){return void 0!==e[t]}).map(function(e){return e[t]}).reduce(function(t,e){return a({},t,e)},{})},A=function(t,e){return e.filter(function(t){return void 0!==t[l.BASE]}).map(function(t){return t[l.BASE]}).reverse().reduce(function(e,r){if(!e.length)for(var n=Object.keys(r),i=0;i/g,\">\").replace(/\"/g,\""\").replace(/'/g,\"'\")},x=function(t){return Object.keys(t).reduce(function(e,r){var n=void 0!==t[r]?r+'=\"'+t[r]+'\"':\"\"+r;return e?e+\" \"+n:n},\"\")},L=function(t,e){return void 0===e&&(e={}),Object.keys(t).reduce(function(e,r){return e[m[r]||r]=t[r],e},e)},j=function(e,r){return r.map(function(r,n){var i,o=((i={key:n})[\"data-rh\"]=!0,i);return Object.keys(r).forEach(function(t){var e=m[t]||t;\"innerHTML\"===e||\"cssText\"===e?o.dangerouslySetInnerHTML={__html:r.innerHTML||r.cssText}:o[e]=r[t]}),t.createElement(e,o)})},M=function(e,r,n){switch(e){case l.TITLE:return{toComponent:function(){return n=r.titleAttributes,(i={key:e=r.title})[\"data-rh\"]=!0,o=L(n,i),[t.createElement(l.TITLE,o,e)];var e,n,i,o},toString:function(){return function(t,e,r,n){var i=x(r),o=S(e);return i?\"<\"+t+' data-rh=\"true\" '+i+\">\"+w(o,n)+\"\":\"<\"+t+' data-rh=\"true\">'+w(o,n)+\"\"}(e,r.title,r.titleAttributes,n)}};case\"bodyAttributes\":case\"htmlAttributes\":return{toComponent:function(){return L(r)},toString:function(){return x(r)}};default:return{toComponent:function(){return j(e,r)},toString:function(){return function(t,e,r){return e.reduce(function(e,n){var i=Object.keys(n).filter(function(t){return!(\"innerHTML\"===t||\"cssText\"===t)}).reduce(function(t,e){var i=void 0===n[e]?e:e+'=\"'+w(n[e],r)+'\"';return t?t+\" \"+i:i},\"\"),o=n.innerHTML||n.cssText||\"\",a=-1===P.indexOf(t);return e+\"<\"+t+' data-rh=\"true\" '+i+(a?\"/>\":\">\"+o+\"\")},\"\")}(e,r,n)}}}},k=function(t){var e=t.baseTag,r=t.bodyAttributes,n=t.encode,i=t.htmlAttributes,o=t.noscriptTags,a=t.styleTags,s=t.title,c=void 0===s?\"\":s,u=t.titleAttributes,h=t.linkTags,m=t.metaTags,y=t.scriptTags,T={toComponent:function(){},toString:function(){return\"\"}};if(t.prioritizeSeoTags){var g=function(t){var e=t.linkTags,r=t.scriptTags,n=t.encode,i=E(t.metaTags,d),o=E(e,p),a=E(r,f);return{priorityMethods:{toComponent:function(){return[].concat(j(l.META,i.priority),j(l.LINK,o.priority),j(l.SCRIPT,a.priority))},toString:function(){return M(l.META,i.priority,n)+\" \"+M(l.LINK,o.priority,n)+\" \"+M(l.SCRIPT,a.priority,n)}},metaTags:i.default,linkTags:o.default,scriptTags:a.default}}(t);T=g.priorityMethods,h=g.linkTags,m=g.metaTags,y=g.scriptTags}return{priority:T,base:M(l.BASE,e,n),bodyAttributes:M(\"bodyAttributes\",r,n),htmlAttributes:M(\"htmlAttributes\",i,n),link:M(l.LINK,h,n),meta:M(l.META,m,n),noscript:M(l.NOSCRIPT,o,n),script:M(l.SCRIPT,y,n),style:M(l.STYLE,a,n),title:M(l.TITLE,{title:c,titleAttributes:u},n)}},H=[],N=function(t,e){var r=this;void 0===e&&(e=\"undefined\"!=typeof document),this.instances=[],this.value={setHelmet:function(t){r.context.helmet=t},helmetInstances:{get:function(){return r.canUseDOM?H:r.instances},add:function(t){(r.canUseDOM?H:r.instances).push(t)},remove:function(t){var e=(r.canUseDOM?H:r.instances).indexOf(t);(r.canUseDOM?H:r.instances).splice(e,1)}}},this.context=t,this.canUseDOM=e,e||(t.helmet=k({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:\"\",titleAttributes:{}}))},R=t.createContext({}),D=r.shape({setHelmet:r.func,helmetInstances:r.shape({get:r.func,add:r.func,remove:r.func})}),U=\"undefined\"!=typeof document,q=/*#__PURE__*/function(e){function r(t){var n;return(n=e.call(this,t)||this).helmetData=new N(n.props.context,r.canUseDOM),n}return s(r,e),r.prototype.render=function(){/*#__PURE__*/return t.createElement(R.Provider,{value:this.helmetData.value},this.props.children)},r}(e);q.canUseDOM=U,q.propTypes={context:r.shape({helmet:r.shape()}),children:r.node.isRequired},q.defaultProps={context:{}},q.displayName=\"HelmetProvider\";var Y=function(t,e){var r,n=document.head||document.querySelector(l.HEAD),i=n.querySelectorAll(t+\"[data-rh]\"),o=[].slice.call(i),a=[];return e&&e.length&&e.forEach(function(e){var n=document.createElement(t);for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(\"innerHTML\"===i?n.innerHTML=e.innerHTML:\"cssText\"===i?n.styleSheet?n.styleSheet.cssText=e.cssText:n.appendChild(document.createTextNode(e.cssText)):n.setAttribute(i,void 0===e[i]?\"\":e[i]));n.setAttribute(\"data-rh\",\"true\"),o.some(function(t,e){return r=e,n.isEqualNode(t)})?o.splice(r,1):a.push(n)}),o.forEach(function(t){return t.parentNode.removeChild(t)}),a.forEach(function(t){return n.appendChild(t)}),{oldTags:o,newTags:a}},B=function(t,e){var r=document.getElementsByTagName(t)[0];if(r){for(var n=r.getAttribute(\"data-rh\"),i=n?n.split(\",\"):[],o=[].concat(i),a=Object.keys(e),s=0;s=0;p-=1)r.removeAttribute(o[p]);i.length===o.length?r.removeAttribute(\"data-rh\"):r.getAttribute(\"data-rh\")!==a.join(\",\")&&r.setAttribute(\"data-rh\",a.join(\",\"))}},K=function(t,e){var r=t.baseTag,n=t.htmlAttributes,i=t.linkTags,o=t.metaTags,a=t.noscriptTags,s=t.onChangeClientState,c=t.scriptTags,u=t.styleTags,p=t.title,f=t.titleAttributes;B(l.BODY,t.bodyAttributes),B(l.HTML,n),function(t,e){void 0!==t&&document.title!==t&&(document.title=S(t)),B(l.TITLE,e)}(p,f);var d={baseTag:Y(l.BASE,r),linkTags:Y(l.LINK,i),metaTags:Y(l.META,o),noscriptTags:Y(l.NOSCRIPT,a),scriptTags:Y(l.SCRIPT,c),styleTags:Y(l.STYLE,u)},h={},m={};Object.keys(d).forEach(function(t){var e=d[t],r=e.newTags,n=e.oldTags;r.length&&(h[t]=r),n.length&&(m[t]=d[t].oldTags)}),e&&e(),s(t,h,m)},_=null,z=/*#__PURE__*/function(t){function e(){for(var e,r=arguments.length,n=new Array(r),i=0;i elements are self-closing and can not contain children. Refer to our API for more information.\")}},o.flattenArrayTypeChildren=function(t){var e,r=t.child,n=t.arrayTypeChildren;return a({},n,((e={})[r.type]=[].concat(n[r.type]||[],[a({},t.newChildProps,this.mapNestedChildrenToProps(r,t.nestedChildren))]),e))},o.mapObjectTypeChildren=function(t){var e,r,n=t.child,i=t.newProps,o=t.newChildProps,s=t.nestedChildren;switch(n.type){case l.TITLE:return a({},i,((e={})[n.type]=s,e.titleAttributes=a({},o),e));case l.BODY:return a({},i,{bodyAttributes:a({},o)});case l.HTML:return a({},i,{htmlAttributes:a({},o)});default:return a({},i,((r={})[n.type]=a({},o),r))}},o.mapArrayTypeChildrenToProps=function(t,e){var r=a({},e);return Object.keys(t).forEach(function(e){var n;r=a({},r,((n={})[e]=t[e],n))}),r},o.warnOnInvalidChildren=function(t,e){return i(h.some(function(e){return t.type===e}),\"function\"==typeof t.type?\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\":\"Only elements types \"+h.join(\", \")+\" are allowed. Helmet does not support rendering <\"+t.type+\"> elements. Refer to our API for more information.\"),i(!e||\"string\"==typeof e||Array.isArray(e)&&!e.some(function(t){return\"string\"!=typeof t}),\"Helmet expects a string as a child of <\"+t.type+\">. Did you forget to wrap your children in braces? ( <\"+t.type+\">{``} ) Refer to our API for more information.\"),!0},o.mapChildrenToProps=function(e,r){var n=this,i={};return t.Children.forEach(e,function(t){if(t&&t.props){var e=t.props,o=e.children,a=u(e,F),s=Object.keys(a).reduce(function(t,e){return t[y[e]||e]=a[e],t},{}),c=t.type;switch(\"symbol\"==typeof c?c=c.toString():n.warnOnInvalidChildren(t,o),c){case l.FRAGMENT:r=n.mapChildrenToProps(o,r);break;case l.LINK:case l.META:case l.NOSCRIPT:case l.SCRIPT:case l.STYLE:i=n.flattenArrayTypeChildren({child:t,arrayTypeChildren:i,newChildProps:s,nestedChildren:o});break;default:r=n.mapObjectTypeChildren({child:t,newProps:r,newChildProps:s,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(i,r)},o.render=function(){var e=this.props,r=e.children,n=u(e,G),i=a({},n),o=n.helmetData;return r&&(i=this.mapChildrenToProps(r,i)),!o||o instanceof N||(o=new N(o.context,o.instances)),o?/*#__PURE__*/t.createElement(z,a({},i,{context:o.value,helmetData:void 0})):/*#__PURE__*/t.createElement(R.Consumer,null,function(e){/*#__PURE__*/return t.createElement(z,a({},i,{context:e}))})},r}(e);W.propTypes={base:r.object,bodyAttributes:r.object,children:r.oneOfType([r.arrayOf(r.node),r.node]),defaultTitle:r.string,defer:r.bool,encodeSpecialCharacters:r.bool,htmlAttributes:r.object,link:r.arrayOf(r.object),meta:r.arrayOf(r.object),noscript:r.arrayOf(r.object),onChangeClientState:r.func,script:r.arrayOf(r.object),style:r.arrayOf(r.object),title:r.string,titleAttributes:r.object,titleTemplate:r.string,prioritizeSeoTags:r.bool,helmetData:r.object},W.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},W.displayName=\"Helmet\";export{W as Helmet,N as HelmetData,q as HelmetProvider};\n//# sourceMappingURL=index.module.js.map\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","import React from 'react';\r\nimport { Helmet, HelmetProvider } from 'react-helmet-async';\r\nimport { BrandingProfile } from '../theme/BrandingProfile';\r\n\r\ninterface FaviconProps {\r\n brandingProfile?: BrandingProfile;\r\n}\r\n\r\nexport const Favicon: React.FC = ({ brandingProfile }) => {\r\n if (!brandingProfile) {\r\n return <>;\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Favicon;\r\n","import { useEffect } from 'react';\r\nimport { BrandingFonts } from '../theme/BrandingProfile';\r\n\r\nexport const fonts: BrandingFonts = {\r\n body: 'Whitney SSm A,Whitney SSm B,Arial', // Todo: We should arrange our fonts by Serif or Sans-serif - Declaring them where they are \"used\" is not good\r\n heading: 'Whitney SSm A,Whitney SSm B,Arial',\r\n monospace: 'monospace',\r\n};\r\n\r\nexport const useFont = () => {\r\n useEffect(() => {\r\n const href = '//cloud.typography.com/6523914/6923752/css/fonts.css'; // Todo: We should not link directly to external source for something that will affect our entire infrastructure\r\n const link = document.createElement('link');\r\n link.type = 'text/css';\r\n link.rel = 'stylesheet';\r\n link.href = href;\r\n document.getElementsByTagName('head')[0].appendChild(link);\r\n }, []);\r\n};\r\n\r\nexport default useFont;\r\n","export const URL_BRANDING = '/unify/ui/brandingprofile';\r\nexport const URL_BRANDING_PROFILE =\r\n '/unify/ui/brandingprofile?brandingProfileId=';\r\nexport const URL_ENDSESSION_IFRAME = '/unify/security/session/endsessioniframe';\r\nexport const URL_FETCH_SECURITY_FUNCTIONS = '/unify/ui/functions';\r\nexport const URL_FETCH_SESSION = '/unify/security/session/get';\r\nexport const URL_GLOBAL_MENU = '/unify/ui/globalmenu';\r\nexport const URL_IMPERSONATE =\r\n '/unify/impersonation/impersonate?impersonatedUserId=';\r\nexport const URL_IMPERSONATION_SEARCH_ALLOWED =\r\n '/unify/impersonation/allowedimpersonations?searchString=';\r\nexport const URL_LOCALIZATIONS = '/unify/ui/localizations';\r\nexport const URL_PASSWORD_CHANGE = '/unify/password/change';\r\nexport const URL_PASSWORD_METADATA = '/unify/password/metadata';\r\nexport const URL_PASSWORD_VALIDATE = '/unify/password/validate';\r\nexport const URL_POLLSESSION_IFRAME = '/unify/security/session/polliframe';\r\nexport const URL_REPORT_ERROR = '/unify/client/reporterror';\r\nexport const URL_SESSION_INFO = '/unify/security/sessioninfo';\r\nexport const URL_SIGNOUT_SUCCESS = '/signedout';\r\nexport const URL_SIGNOUT_FAILED = '/signoutfailed';\r\nexport const URL_SYSTEM_INFORMATION = '/unify/ui/systeminformation';\r\nexport const URL_TRANSLATIONS_ALL = '/unify/ui/translations/all';\r\nexport const URL_TRANSLATIONS_CONTEXT =\r\n '/unify/ui/translations/context?context=';\r\nexport const URL_USER_INFORMATION = '/unify/ui/userinformation';\r\n\r\nexport const SESSION_PAGE_IVISIBILITY_THRESHOLD_MS = 300000; // 5 MIN\r\nexport const SESSION_SESSIONPOLLER_IFRAME_BACKOFF_PERIODS_MS = [\r\n 5000, 10000, 30000,\r\n];\r\nexport const SESSION_ENDSESSION_IFRAME_BACKOFF_PERIODS_MS = [\r\n 2000, 3000, 4000, 10000, 30000,\r\n];\r\n","import camelCase from 'lodash.camelcase';\r\nimport mapKeys from 'lodash.mapkeys';\r\nimport React, {\r\n useContext,\r\n useState,\r\n useLayoutEffect,\r\n PropsWithChildren,\r\n} from 'react';\r\nimport { getContrasting, getHarmonious, tintRgb } from './color';\r\nimport { Favicon } from './favicon';\r\nimport { fonts } from './font';\r\nimport { ThemeProvider } from 'styled-components';\r\nimport { BrandingColors, BrandingProfile } from '../theme/BrandingProfile';\r\nimport { URL_BRANDING, URL_BRANDING_PROFILE } from '../common/constants';\r\n\r\nexport const BrandingContext = React.createContext(\r\n null as any\r\n);\r\n\r\nexport const UnifyThemeProvider: React.FC = (props) => {\r\n const contextBranding = useContext(BrandingContext);\r\n\r\n if (contextBranding == null || contextBranding.colors == null) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\ninterface UnifyBrandingProviderProps {\r\n brandingProfileId?: string;\r\n brandingProfile?: BrandingProfile;\r\n addFaviconToPage?: boolean;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const BrandingProvider: React.FC = ({\r\n brandingProfileId,\r\n brandingProfile,\r\n addFaviconToPage = false,\r\n children,\r\n}) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nfunction mapToIBrandingProfile(result: any): BrandingProfile {\r\n return {\r\n backgroundImageHash: result.backgroundImageHash,\r\n brandingProfileId: result.brandingProfileId,\r\n colors: mapKeys(result.colors, (v, k) =>\r\n camelCase(k)\r\n ) as BrandingColors,\r\n fonts: fonts,\r\n hasBackgroundImage: result.hasBackgroundImage,\r\n hasIconImage: result.hasIconImage,\r\n hasLogoImage: result.hasLogoImage,\r\n iconImageHash: result.iconImageHash,\r\n logoImageHash: result.logoImageHash,\r\n getContrastingColors: function (count) {\r\n const colors = [\r\n this.colors.chartColor1,\r\n this.colors.chartColor2,\r\n this.colors.chartColor3,\r\n this.colors.chartColor4,\r\n this.colors.chartColor5,\r\n this.colors.chartColor6,\r\n ];\r\n return getContrasting(colors, count);\r\n },\r\n getHarmoniousColors: function (count) {\r\n const colors = [\r\n this.colors.chartColor1,\r\n this.colors.chartColor2,\r\n this.colors.chartColor3,\r\n this.colors.chartColor4,\r\n this.colors.chartColor5,\r\n this.colors.chartColor6,\r\n ];\r\n return getHarmonious(colors, count);\r\n },\r\n tintRgb: function (color, tintFactor) {\r\n return tintRgb(color, tintFactor);\r\n },\r\n };\r\n}\r\n\r\nexport const UnifyBrandingProvider: React.FC = ({\r\n addFaviconToPage = true,\r\n ...props\r\n}) => {\r\n const [brandingProfile, setBrandingProfile] = useState<\r\n BrandingProfile | undefined\r\n >(props.brandingProfile);\r\n\r\n if (\r\n props.brandingProfile !== undefined &&\r\n props.brandingProfileId !== undefined\r\n ) {\r\n throw new Error(\r\n 'UnifyBrandingProvider ERROR: Not possible to use brandingProfile and brandingProfileId at the same time!'\r\n );\r\n }\r\n\r\n useLayoutEffect(() => {\r\n if (props.brandingProfile !== undefined) {\r\n return;\r\n }\r\n\r\n fetchBrandingProfile(props.brandingProfileId);\r\n }, [props.brandingProfileId, props.brandingProfile]);\r\n\r\n function fetchBrandingProfile(brandingProfileId?: string) {\r\n const url =\r\n brandingProfileId !== undefined\r\n ? `${URL_BRANDING_PROFILE}${brandingProfileId}`\r\n : URL_BRANDING;\r\n\r\n return fetch(url)\r\n .then((result) => result.json())\r\n .then((result) => {\r\n if (\r\n brandingProfileId &&\r\n result &&\r\n result.brandingProfileId.toUpperCase() !==\r\n brandingProfileId.toUpperCase()\r\n ) {\r\n throw new Error(\r\n 'Using props brandingProfileId in BrandingProvider requires Unify Framework >= 7.7.2'\r\n );\r\n }\r\n\r\n setBrandingProfile(mapToIBrandingProfile(result));\r\n });\r\n }\r\n\r\n return (\r\n \r\n {addFaviconToPage && }\r\n {props.children}\r\n \r\n );\r\n};\r\n\r\ninterface WithBrandingProps {\r\n brandingProfile: BrandingProfile | undefined;\r\n}\r\n\r\nexport function withBranding(\r\n WrappedComponent: React.ComponentType\r\n): React.ComponentType {\r\n const WithBranding = (props: T): JSX.Element => {\r\n const branding = useContext(BrandingContext);\r\n\r\n return ;\r\n };\r\n\r\n WithBranding.displayName = `WithBranding(${getDisplayName(\r\n WrappedComponent\r\n )})`;\r\n\r\n return WithBranding;\r\n\r\n function getDisplayName(WrappedComponent: React.ComponentType) {\r\n return (\r\n WrappedComponent.displayName || WrappedComponent.name || 'Component'\r\n );\r\n }\r\n}\r\n","export enum IconSide {\r\n LEFT = 1,\r\n RIGHT = 2,\r\n}\r\n","export enum InputSize {\r\n SMALL = 2,\r\n MEDIUM = 3,\r\n LARGE = 4,\r\n}\r\n","import styled from 'styled-components';\r\nimport { IconSide } from './input-side';\r\nimport { InputSize } from './input-size';\r\n\r\nexport interface StyledInputWrapperProps {\r\n fontSize: string;\r\n height: string;\r\n width: string;\r\n borderColor: string;\r\n $iconSide?: IconSide;\r\n inputSize: InputSize;\r\n displayIcon: boolean;\r\n}\r\n\r\nexport const StyledInputWrapper = styled.div<{\r\n cssData: StyledInputWrapperProps;\r\n}>`\r\n position: relative;\r\n label {\r\n color: #333333;\r\n display: block;\r\n max-width: 100%;\r\n margin-bottom: 5px;\r\n font-weight: 700;\r\n }\r\n\r\n input {\r\n padding: 5px;\r\n ${(props) => {\r\n if (props.cssData.displayIcon && props.cssData.$iconSide) {\r\n let padding = '';\r\n if (props.cssData.$iconSide === IconSide.LEFT) {\r\n padding += 'padding-left: ';\r\n } else if (props.cssData.$iconSide === IconSide.RIGHT) {\r\n padding += 'padding-right: ';\r\n }\r\n\r\n switch (props.cssData.inputSize) {\r\n case InputSize.SMALL:\r\n padding += '32px;';\r\n break;\r\n case InputSize.MEDIUM:\r\n padding += '36px;';\r\n break;\r\n case InputSize.LARGE:\r\n padding += '46px;';\r\n break;\r\n }\r\n\r\n return padding;\r\n }\r\n\r\n return '';\r\n }}\r\n border: 1px solid ${(props) => props.cssData.borderColor};\r\n box-sizing: border-box;\r\n font-family: ${(props) => props.theme.fonts.body};\r\n font-size: ${(props) => props.cssData.fontSize};\r\n height: ${(props) => props.cssData.height};\r\n outline: none;\r\n order: 2;\r\n width: ${(props) => props.cssData.width};\r\n }\r\n\r\n label > div {\r\n border: 1px solid ${(props) => props.cssData.borderColor};\r\n box-sizing: border-box;\r\n height: ${(props) => props.cssData.height};\r\n > i {\r\n height: ${(props) => props.cssData.height};\r\n }\r\n }\r\n\r\n input:active,\r\n input:focus {\r\n border-color: ${(props) => props.theme.primary};\r\n ~ div {\r\n border-color: ${(props) => props.theme.primary};\r\n }\r\n }\r\n`;\r\n\r\nexport interface StyledInputMessageProps {\r\n hasMessage: boolean;\r\n}\r\n\r\nexport const StyledInputMessage = styled.div<{\r\n cssData: StyledInputMessageProps;\r\n}>`\r\n display: flex;\r\n flex-grow: 1;\r\n color: ${(props) =>\r\n props.cssData.hasMessage ? props.theme.danger : props.theme.text};\r\n`;\r\n\r\nexport const InputIconWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n`;\r\n\r\nexport interface InputIconProps {\r\n size: InputSize;\r\n}\r\n\r\nconst InputIcon = styled.div<{\r\n cssData: InputIconProps;\r\n}>`\r\n position: absolute;\r\n font-size: ${(props) => {\r\n switch (props.cssData.size) {\r\n case InputSize.SMALL:\r\n return '1.5rem';\r\n case InputSize.MEDIUM:\r\n return '1.8rem';\r\n case InputSize.LARGE:\r\n return '2.3rem';\r\n }\r\n }};\r\n`;\r\n\r\nexport const RightIcon = styled(InputIcon)<{\r\n cssData: InputIconProps;\r\n}>`\r\n display: flex;\r\n align-items: center;\r\n right: 5px;\r\n`;\r\n\r\nexport const LeftIcon = styled(InputIcon)<{\r\n cssData: InputIconProps;\r\n}>`\r\n display: flex;\r\n align-items: center;\r\n left: 5px;\r\n`;\r\n","import React, { ForwardedRef, useState } from 'react';\r\nimport { BrandingContext } from '../../theme/branding';\r\nimport { randomizedId } from '../../randomizedId';\r\nimport {\r\n StyledInputMessage,\r\n StyledInputWrapper,\r\n StyledInputWrapperProps,\r\n RightIcon,\r\n LeftIcon,\r\n InputIconProps,\r\n InputIconWrapper,\r\n} from './styles';\r\nimport { InputSize } from './input-size';\r\nimport { IconSide } from './input-side';\r\n\r\nexport interface InputProps\r\n extends Omit, 'onChange'> {\r\n label?: string;\r\n /**\r\n * Validation/error message to be displayed below the input.\r\n */\r\n message?: string;\r\n icon?: JSX.Element;\r\n iconSide?: IconSide;\r\n size?: InputSize;\r\n value?: string | number | readonly string[] | undefined;\r\n onChange?: (\r\n e: React.ChangeEvent,\r\n value: string,\r\n uniqueId: string\r\n ) => void;\r\n type?: string;\r\n autoFocus?: boolean;\r\n ref?: ForwardedRef;\r\n}\r\n\r\n/**\r\n * Input component with support for icons and validation/error messages\r\n */\r\nexport const Input = React.forwardRef(\r\n (\r\n {\r\n value,\r\n id,\r\n className,\r\n onChange,\r\n message,\r\n size = InputSize.MEDIUM,\r\n type = 'text',\r\n label,\r\n iconSide = IconSide.LEFT,\r\n icon,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { colors } = React.useContext(BrandingContext);\r\n const [randomId] = useState(randomizedId());\r\n const uniqueId = id || randomId;\r\n\r\n const { ...passThroughProps } = props;\r\n const hasMessage = message != null;\r\n\r\n let height = 38;\r\n let fontSize = 16;\r\n\r\n switch (size) {\r\n case InputSize.SMALL:\r\n height = 33;\r\n fontSize = 14;\r\n break;\r\n case InputSize.LARGE:\r\n height = 56;\r\n fontSize = 16;\r\n break;\r\n case InputSize.MEDIUM:\r\n default:\r\n break;\r\n }\r\n\r\n const borderColor = hasMessage ? colors.danger : colors.border;\r\n const hasIcon = icon && iconSide ? true : false;\r\n\r\n const cssData: StyledInputWrapperProps = {\r\n borderColor,\r\n fontSize: `${fontSize}px`,\r\n height: `${height}px`,\r\n width: '100%',\r\n displayIcon: hasIcon,\r\n $iconSide: iconSide,\r\n inputSize: size,\r\n };\r\n\r\n const handleChange = (e: React.ChangeEvent) => {\r\n if (onChange) {\r\n onChange(e, e.currentTarget.value, uniqueId);\r\n }\r\n };\r\n\r\n const iconCssData: InputIconProps = {\r\n size: size,\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {label && }\r\n \r\n \r\n {hasIcon && iconSide === IconSide.RIGHT && (\r\n {icon}\r\n )}\r\n {hasIcon && iconSide === IconSide.LEFT && (\r\n {icon}\r\n )}\r\n \r\n \r\n {hasMessage && (\r\n \r\n {hasMessage && message}\r\n \r\n )}\r\n \r\n );\r\n }\r\n);\r\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import * as React from 'react';\r\nimport Cookies from './Cookies';\r\nvar CookiesContext = React.createContext(new Cookies());\r\nexport var Provider = CookiesContext.Provider, Consumer = CookiesContext.Consumer;\r\nexport default CookiesContext;\r\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport Cookies from 'universal-cookie';\r\nimport { Provider } from './CookiesContext';\r\nvar CookiesProvider = /** @class */ (function (_super) {\r\n __extends(CookiesProvider, _super);\r\n function CookiesProvider(props) {\r\n var _this = _super.call(this, props) || this;\r\n if (props.cookies) {\r\n _this.cookies = props.cookies;\r\n }\r\n else {\r\n _this.cookies = new Cookies();\r\n }\r\n return _this;\r\n }\r\n CookiesProvider.prototype.render = function () {\r\n return React.createElement(Provider, { value: this.cookies }, this.props.children);\r\n };\r\n return CookiesProvider;\r\n}(React.Component));\r\nexport default CookiesProvider;\r\n","import { useContext, useEffect, useState, useRef, useMemo } from 'react';\r\nimport CookiesContext from './CookiesContext';\r\nexport default function useCookies(dependencies) {\r\n var cookies = useContext(CookiesContext);\r\n if (!cookies) {\r\n throw new Error('Missing ');\r\n }\r\n var initialCookies = cookies.getAll();\r\n var _a = useState(initialCookies), allCookies = _a[0], setCookies = _a[1];\r\n var previousCookiesRef = useRef(allCookies);\r\n useEffect(function () {\r\n function onChange() {\r\n var newCookies = cookies.getAll();\r\n if (shouldUpdate(dependencies || null, newCookies, previousCookiesRef.current)) {\r\n setCookies(newCookies);\r\n }\r\n previousCookiesRef.current = newCookies;\r\n }\r\n cookies.addChangeListener(onChange);\r\n return function () {\r\n cookies.removeChangeListener(onChange);\r\n };\r\n }, [cookies]);\r\n var setCookie = useMemo(function () { return cookies.set.bind(cookies); }, [cookies]);\r\n var removeCookie = useMemo(function () { return cookies.remove.bind(cookies); }, [cookies]);\r\n return [allCookies, setCookie, removeCookie];\r\n}\r\nfunction shouldUpdate(dependencies, newCookies, oldCookies) {\r\n if (!dependencies) {\r\n return true;\r\n }\r\n for (var _i = 0, dependencies_1 = dependencies; _i < dependencies_1.length; _i++) {\r\n var dependency = dependencies_1[_i];\r\n if (newCookies[dependency] !== oldCookies[dependency]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n","import React, { PropsWithChildren, useContext, useState } from 'react';\r\nimport { useCookies } from 'react-cookie';\r\n\r\n// TODO: move constants to central place.\r\nexport const CULTURE_COOKIE = 'UN_CLT';\r\nexport enum Cultures {\r\n ENGLISH = 'en-US',\r\n SWEDISH = 'sv-SE',\r\n DANISH = 'da-DK',\r\n NORWEGIAN_BOK = 'nb-NO',\r\n NORWEGIAN_NEW = 'nn-NO',\r\n FINNISH = 'fi-FI',\r\n DUTCH = 'nl-NL',\r\n}\r\n\r\nexport interface CultureContextProps {\r\n culture: Cultures;\r\n setCulture: (newCulture: Cultures) => void;\r\n}\r\n\r\nexport const DEFAULT_CULTURE = Cultures.ENGLISH;\r\nconst COOKIE_EXPIRATION_DAYS = 365;\r\n\r\nexport const CultureContext = React.createContext({\r\n culture: DEFAULT_CULTURE,\r\n setCulture: () => {\r\n return;\r\n },\r\n});\r\n\r\nexport const useCulture = (): Cultures => {\r\n return useContext(CultureContext).culture;\r\n};\r\n\r\nconst buildCookieOptions = (domain) => {\r\n const date = new Date();\r\n date.setDate(date.getDate() + COOKIE_EXPIRATION_DAYS);\r\n\r\n return {\r\n path: '/',\r\n expires: date,\r\n domain: domain,\r\n };\r\n};\r\n\r\nexport const UnifyCultureProvider: React.FC = (props) => {\r\n const [cookie, setCookie] = useCookies([CULTURE_COOKIE]);\r\n const [domain] = useState(resolveDomain());\r\n\r\n const context = {\r\n setCulture: (newCulture: Cultures) => {\r\n setCookie(CULTURE_COOKIE, newCulture, buildCookieOptions(domain));\r\n },\r\n culture: cookie[CULTURE_COOKIE] || DEFAULT_CULTURE,\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\ninterface WithCultureProps {\r\n cultureContext: CultureContextProps;\r\n}\r\n\r\nfunction getDisplayName(WrappedComponent) {\r\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n}\r\n\r\nexport function withCulture(\r\n Component: React.ComponentType\r\n) {\r\n return class extends React.Component> {\r\n public static readonly displayName = `WithCulture(${getDisplayName(\r\n Component\r\n )})`;\r\n\r\n static contextType = CultureContext;\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n };\r\n}\r\n\r\n// 'Try and set cookie'-approach to resolve cookie domain scope.\r\n// https://developers.livechatinc.com/blog/setting-cookies-to-subdomains-in-javascript/\r\n// http://rossscrivener.co.uk/blog/javascript-get-domain-exclude-subdomain\r\nconst resolveDomain = () => {\r\n let i = 0;\r\n let domain = document.domain;\r\n const p = domain.split('.');\r\n const s = '_gd' + new Date().getTime();\r\n while (i < p.length - 1 && document.cookie.indexOf(s + '=' + s) === -1) {\r\n domain = p.slice(-1 - ++i).join('.');\r\n document.cookie = s + '=' + s + ';domain=' + domain + ';';\r\n }\r\n document.cookie =\r\n s + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain=' + domain + ';';\r\n // Localhost get cookies scoped to same-site.\r\n return domain.includes('localhost') ? undefined : `.${domain}`;\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const StyledDatepickerInput = styled.div`\r\n display: flex;\r\n flex-grow: 1;\r\n`;\r\n\r\nexport const StyledWrapper = styled.div`\r\n width: 100%;\r\n\r\n .react-datepicker-popper {\r\n z-index: 1041;\r\n }\r\n\r\n .datepicker-input {\r\n box-sizing: border-box;\r\n }\r\n\r\n .calendar {\r\n border-radius: 0;\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n }\r\n\r\n .react-datepicker__header {\r\n background-color: white; /* TODO: This needs to be from variables */\r\n .react-datepicker__day-name {\r\n margin: 0.166rem 0;\r\n width: 56px; /* TODO: This needs to be from variables */\r\n }\r\n }\r\n\r\n .react-datepicker__month {\r\n border-collapse: collapse;\r\n box-sizing: border-box;\r\n }\r\n\r\n .react-datepicker__week {\r\n display: table-row;\r\n border-collapse: collapse;\r\n box-sizing: border-box;\r\n border: 0;\r\n }\r\n\r\n .react-datepicker__day {\r\n background-clip: padding-box;\r\n border: 1px solid #dedede; /* TODO: This needs to be from variables */\r\n border-radius: 0;\r\n box-sizing: border-box;\r\n display: table-cell;\r\n font-size: 16px; /* TODO: This needs to be from variables */\r\n height: 56px; /* TODO: This needs to be from variables */\r\n line-height: 24px; /* TODO: This needs to be from variables */\r\n margin: 0;\r\n padding: 5px; /* TODO: This needs to be from variables */\r\n position: relative;\r\n text-align: center;\r\n vertical-align: middle;\r\n width: 56px; /* TODO: This needs to be from variables */\r\n :hover {\r\n background-color: ${(props) => props.theme.backgroundAlternate};\r\n color: ${(props) => props.theme.text};\r\n }\r\n }\r\n\r\n .react-datepicker__day--today {\r\n background-color: ${(props) => props.theme.primary};\r\n\r\n :before {\r\n border: 1px solid ${(props) => props.theme.primary};\r\n box-sizing: border-box;\r\n content: '';\r\n height: 56px; /* TODO: This needs to be from variables */\r\n left: 0;\r\n margin: -1px;\r\n position: absolute;\r\n top: 0;\r\n width: calc(100% + 1px);\r\n }\r\n :hover {\r\n background-color: ${(props) => props.theme.primaryLighter};\r\n color: ${(props) => props.theme.text};\r\n }\r\n }\r\n\r\n .react-datepicker__day--selected,\r\n .react-datepicker__day--in-selecting-range,\r\n .react-datepicker__day--in-range,\r\n .react-datepicker__month-text--selected,\r\n .react-datepicker__month-text--in-selecting-range,\r\n .react-datepicker__month-text--in-range {\r\n background-color: ${(props) => props.theme.primaryDarker};\r\n :before {\r\n border: 1px solid ${(props) => props.theme.primaryDarker};\r\n box-sizing: border-box;\r\n content: '';\r\n height: 56px; /* TODO: This needs to be from variables */\r\n left: 0;\r\n margin: -1px;\r\n position: absolute;\r\n top: 0;\r\n width: calc(100% + 1px);\r\n }\r\n :hover {\r\n background-color: ${(props) => props.theme.primaryLighter};\r\n }\r\n }\r\n\r\n .react-datepicker__day--disabled {\r\n color: #eee; /* TODO: This needs to be from variables */\r\n }\r\n\r\n .react-datepicker__day--today.react-datepicker__day--disabled {\r\n background-color: #fffacd; /* TODO: This needs to be from variables */\r\n :hover {\r\n background-color: ${(props) => props.theme.background};\r\n }\r\n }\r\n\r\n .react-datepicker__day:hover {\r\n border-radius: 0;\r\n }\r\n\r\n /*\r\n * Fix smaller datepicker fields\r\n * Wrap datepicker with div that has style width to achieve smaller datepicker (
).\r\n * When having smaller datepicker calendar icon and clear icon will get wrong position if input has display: flex.\r\n * To avoid this we change input to display inline with width: 100%\r\n */\r\n .datepicker-input > label > input {\r\n min-width: 0;\r\n display: inline;\r\n /* width: 100%; */\r\n }\r\n\r\n .react-datepicker-wrapper,\r\n div.react-datepicker__input-container,\r\n div.react-datepicker__input-container > div {\r\n width: 100%;\r\n }\r\n div.react-datepicker__input-container > div:first-child {\r\n display: inline-block;\r\n }\r\n input:focus:not(:hover) ~ span {\r\n border: 1px solid ${(props) => props.theme.primary}; /* TODO: This needs to be from variables (1px solid) */\r\n }\r\n\r\n .datepicker-input > div > input:disabled {\r\n background-color: #e6e9ea; /* TODO: This needs to be from variables */\r\n ~ div {\r\n background-color: #e6e9ea; /* TODO: This needs to be from variables */\r\n }\r\n }\r\n\r\n .datepicker-input > div > input {\r\n caret-color: transparent;\r\n cursor: pointer;\r\n }\r\n\r\n .datepicker-input > div > input ~ div {\r\n background-color: white; /* TODO: This needs to be from variables */\r\n cursor: pointer;\r\n }\r\n\r\n .datepicker-input > div > input ~ div > i {\r\n flex-direction: column;\r\n display: flex;\r\n justify-content: center;\r\n }\r\n\r\n .react-datepicker__close-icon {\r\n right: 50px;\r\n width: 20px; /* TODO: This needs to be from variables */\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-content: center;\r\n\r\n height: 100%;\r\n top: 0;\r\n\r\n :after {\r\n background: url(\"data:image/svg+xml;utf8, \")\r\n no-repeat center; /* TODO: This needs to be from variables */\r\n border-radius: 0;\r\n content: ' ';\r\n height: 56px; /* TODO: This needs to be from variables */\r\n padding: 0;\r\n width: 20px; /* TODO: This needs to be from variables */\r\n }\r\n\r\n :hover:after {\r\n background: url(\"data:image/svg+xml;utf8, \")\r\n no-repeat center; /* TODO: This needs to be from variables */\r\n }\r\n }\r\n`;\r\n","import React, { ForwardedRef, useContext, useRef, useState } from 'react';\r\nimport DatePicker, {\r\n registerLocale,\r\n ReactDatePickerProps,\r\n} from 'react-datepicker';\r\n\r\nimport enUS from 'date-fns/locale/en-US';\r\nimport sv from 'date-fns/locale/sv';\r\nimport da from 'date-fns/locale/da';\r\nimport nb from 'date-fns/locale/nb';\r\nimport nn from 'date-fns/locale/nn';\r\nimport fi from 'date-fns/locale/fi';\r\nimport nl from 'date-fns/locale/nl';\r\nimport { IconSide, Input, InputSize } from '../Input';\r\nimport { Icon } from '../Icon';\r\nimport { CultureContext, Cultures } from '../../context/culture';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport { BrandingContext } from '../../theme/branding';\r\nimport { StyledDatepickerInput, StyledWrapper } from './styles';\r\nimport { getTimeCaption } from './translations';\r\n\r\nregisterLocale(Cultures.ENGLISH, enUS);\r\nregisterLocale(Cultures.SWEDISH, sv);\r\nregisterLocale(Cultures.DANISH, da);\r\nregisterLocale(Cultures.NORWEGIAN_BOK, nb);\r\nregisterLocale(Cultures.NORWEGIAN_NEW, nn);\r\nregisterLocale(Cultures.FINNISH, fi);\r\nregisterLocale(Cultures.DUTCH, nl);\r\n\r\ninterface DatepickerInputProps {\r\n icon: JSX.Element;\r\n iconSide: IconSide;\r\n showTodaysDate?: boolean;\r\n autoComplete: 'off';\r\n size: InputSize;\r\n ref?: ForwardedRef;\r\n}\r\n\r\nconst DatepickerInput = React.forwardRef<\r\n HTMLInputElement,\r\n DatepickerInputProps\r\n>((props, ref) => (\r\n \r\n \r\n \r\n));\r\n\r\nexport interface DatepickerProps extends ReactDatePickerProps {\r\n className?: string;\r\n iconShowTodaysDate?: boolean;\r\n onChange: (date: Date | [Date, Date] | null) => void;\r\n locale?: Cultures;\r\n inputSize?: InputSize;\r\n isShowYearDropdown?: boolean;\r\n}\r\n\r\nexport const Datepicker: React.FC = ({\r\n onChange,\r\n className,\r\n iconShowTodaysDate = true,\r\n isClearable = true,\r\n inputSize = InputSize.LARGE,\r\n autoFocus,\r\n isShowYearDropdown = false,\r\n onBlur,\r\n onFocus,\r\n ...props\r\n}) => {\r\n const cultureContext = useContext(CultureContext);\r\n const ref = useRef(null);\r\n const { colors } = React.useContext(BrandingContext);\r\n const [stateHasFocus, setStateHasFocus] = useState(false);\r\n\r\n if (props.locale === undefined) {\r\n props.locale = cultureContext.culture;\r\n }\r\n\r\n if (props.dateFormat === undefined) {\r\n props.dateFormat = props.showTimeSelect !== undefined ? 'Pp' : 'P';\r\n }\r\n\r\n if (props.timeFormat === undefined) {\r\n props.timeFormat = 'p';\r\n }\r\n\r\n if (props.timeCaption === undefined) {\r\n props.timeCaption = getTimeCaption(props.locale);\r\n }\r\n\r\n return (\r\n \r\n \r\n }\r\n iconSide={IconSide.RIGHT}\r\n autoComplete=\"off\"\r\n size={inputSize}\r\n ref={ref}\r\n />\r\n }\r\n onFocus={(evt) => {\r\n setStateHasFocus(true);\r\n\r\n if (onFocus) {\r\n onFocus.call(this, evt);\r\n }\r\n }}\r\n onBlur={(evt) => {\r\n setStateHasFocus(false);\r\n\r\n if (onBlur) {\r\n onBlur.call(this, evt);\r\n }\r\n }}\r\n showYearDropdown={isShowYearDropdown}\r\n autoFocus={stateHasFocus}\r\n className=\"datepicker-input\"\r\n calendarClassName=\"calendar\"\r\n isClearable={isClearable}\r\n {...props}\r\n />\r\n \r\n );\r\n};\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar DISPLAY_NONE = \"none\";\nvar DISPLAY_CONTENTS = \"contents\";\n\nvar tabbableNode = /input|select|textarea|button|object|iframe/;\n\nfunction isNotOverflowing(element, style) {\n return style.getPropertyValue(\"overflow\") !== \"visible\" ||\n // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0;\n}\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n // If the node is empty, this is good enough\n if (zeroSize && !element.innerHTML) return true;\n\n try {\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n var displayValue = style.getPropertyValue(\"display\");\n return zeroSize ? displayValue !== DISPLAY_CONTENTS && isNotOverflowing(element, style) : displayValue === DISPLAY_NONE;\n } catch (exception) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inspect element style\");\n return false;\n }\n}\n\nfunction visible(element) {\n var parentElement = element;\n var rootNode = element.getRootNode && element.getRootNode();\n while (parentElement) {\n if (parentElement === document.body) break;\n\n // if we are not hidden yet, skip to checking outside the Web Component\n if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n }, []);\n return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"focusManager ----------\");\n focusLaterElements.forEach(function (f) {\n var check = f || {};\n console.log(check.nodeName, check.className, check.id);\n });\n console.log(\"end focusManager ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var toFocus = null;\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus({ preventScroll: preventScroll });\n }\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1];\n var activeElement = getActiveElement();\n\n // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n if (node === activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n\n // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n // If we are not in safari desktop, let the browser control\n // the focus\n if (!isSafariDesktop) return;\n\n var x = tabbable.indexOf(activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x];\n\n // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n\n target.focus();\n}\nmodule.exports = exports[\"default\"];","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n if (globalElement) {\n if (globalElement.removeAttribute) {\n globalElement.removeAttribute(\"aria-hidden\");\n } else if (globalElement.length != null) {\n globalElement.forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n } else {\n document.querySelectorAll(globalElement).forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n }\n }\n globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var check = globalElement || {};\n console.log(\"ariaAppHider ----------\");\n console.log(check.nodeName, check.className, check.id);\n console.log(\"end ariaAppHider ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n var el = appElement || globalElement;\n if (el) {\n return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n } else {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n return [];\n }\n}\n\nfunction hide(appElement) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var el = _step.value;\n\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction show(appElement) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var el = _step2.value;\n\n el.removeAttribute(\"aria-hidden\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n var htmlElement = document.getElementsByTagName(\"html\")[0];\n for (var cls in htmlClassList) {\n removeClass(htmlElement, htmlClassList[cls]);\n }\n\n var body = document.body;\n for (var _cls in docBodyClassList) {\n removeClass(body, docBodyClassList[_cls]);\n }\n\n htmlClassList = {};\n docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n\n buffer += \" (\" + classes + \"):\\n \";\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n \";\n }\n\n classes = document.body.className;\n\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n \";\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n \";\n }\n\n buffer += \"\\n\";\n\n console.log(buffer);\n }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n poll[className] += 1;\n return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n return;\n }\n _this.openInstances.push(openInstance);\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n return;\n }\n _this.openInstances.splice(index, 1);\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType,\n // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n console.log(\"portalOpenInstances ----------\");\n console.log(portalOpenInstances.openInstances.length);\n portalOpenInstances.openInstances.forEach(function (p) {\n return console.log(p);\n });\n console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n after = void 0,\n instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n var _arr = [before, after];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var item = _arr[_i];\n if (!item) continue;\n item.parentNode && item.parentNode.removeChild(item);\n }\n before = after = null;\n instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n console.log(\"bodyTrap ----------\");\n console.log(instances.length);\n var _arr2 = [before, after];\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var item = _arr2[_i2];\n var check = item || {};\n console.log(check.nodeName, check.className, check.id);\n }\n console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n return;\n }\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before && !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\n\n/**\n * We need to support the deprecated `KeyboardEvent.keyCode` in addition to\n * `KeyboardEvent.code` for apps that still support IE11. Can be removed when\n * `react-modal` only supports React >18 (which dropped IE support).\n */\nvar isTabKey = function isTabKey(event) {\n return event.code === \"Tab\" || event.keyCode === 9;\n};\nvar isEscKey = function isEscKey(event) {\n return event.code === \"Escape\" || event.keyCode === 27;\n};\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName,\n parentSelector = _this$props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Remove classes.\n bodyOpenClassName && classList.remove(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.remove(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus(_this.props.preventScroll);\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({ isOpen: true }, function () {\n _this.openAnimationFrame = requestAnimationFrame(function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (isTabKey(event)) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && isEscKey(event)) {\n event.stopPropagation();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n }\n\n // Focus only needs to be set once when the modal is being opened\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n clearTimeout(this.closeTimer);\n cancelAnimationFrame(this.openAnimationFrame);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName,\n parentSelector = _props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Add classes.\n bodyOpenClassName && classList.add(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.add(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles,\n children = _props2.children;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n if (this.shouldBeClosed()) {\n return null;\n }\n\n var overlayProps = {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n };\n\n var contentProps = _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n });\n\n var contentElement = this.props.contentElement(contentProps, children);\n return this.props.overlayElement(overlayProps, contentElement);\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n parentSelector: _propTypes2.default.func,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _safeHTMLElement.canUseDOM && _reactDom2.default.createPortal !== undefined;\n\nvar createHTMLElement = function createHTMLElement(name) {\n return document.createElement(name);\n};\n\nvar getCreatePortal = function getCreatePortal() {\n return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n if (parent && parent.contains(_this.node)) {\n parent.removeChild(_this.node);\n } else {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"parentSelector\" prop did not returned any DOM ' + \"element. Make sure that the parent element is unmounted to \" + \"avoid any memory leaks.\");\n }\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var createPortal = getCreatePortal();\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n this.node.className = this.props.portalClassName;\n\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps) {\n var prevParent = getParentElement(prevProps.parentSelector);\n var nextParent = getParentElement(this.props.parentSelector);\n return { prevParent: prevParent, nextParent: nextParent };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, _, snapshot) {\n if (!_safeHTMLElement.canUseDOM) return;\n var _props = this.props,\n isOpen = _props.isOpen,\n portalClassName = _props.portalClassName;\n\n\n if (prevProps.portalClassName !== portalClassName) {\n this.node.className = portalClassName;\n }\n\n var prevParent = snapshot.prevParent,\n nextParent = snapshot.nextParent;\n\n if (nextParent !== prevParent) {\n prevParent.removeChild(this.node);\n nextParent.appendChild(this.node);\n }\n\n // Stop unnecessary renders if modal is remaining closed\n if (!prevProps.isOpen && !isOpen) return;\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n\n var createPortal = getCreatePortal();\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n role: \"dialog\",\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n shouldReturnFocusAfterClose: true,\n preventScroll: false,\n parentSelector: function parentSelector() {\n return document.body;\n },\n overlayElement: function overlayElement(props, contentEl) {\n return _react2.default.createElement(\n \"div\",\n props,\n contentEl\n );\n },\n contentElement: function contentElement(props, children) {\n return _react2.default.createElement(\n \"div\",\n props,\n children\n );\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\n\n\n(0, _reactLifecyclesCompat.polyfill)(Modal);\n\nif (process.env.NODE_ENV !== \"production\") {\n Modal.setCreateHTMLElement = function (fn) {\n return createHTMLElement = fn;\n };\n}\n\nexports.default = Modal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","import Modal from 'react-modal';\r\nimport styled from 'styled-components';\r\nimport { animationOptions } from './dialog';\r\n\r\nexport const defaultStyleOverrides: ReactModal.Styles = {\r\n overlay: {\r\n backgroundColor: 'rgba(51, 51, 51, 0.7)',\r\n overflowX: 'hidden',\r\n overflowY: 'auto',\r\n zIndex: 1050,\r\n },\r\n content: {\r\n position: 'relative',\r\n },\r\n};\r\n\r\nexport const defaultStyleOVerridesFullscreen: ReactModal.Styles = {\r\n overlay: {\r\n zIndex: 1050,\r\n },\r\n content: {\r\n bottom: 0,\r\n left: 0,\r\n margin: 0,\r\n overflowY: 'auto',\r\n position: 'fixed',\r\n right: 0,\r\n top: 0,\r\n transform: 'none',\r\n width: 'auto',\r\n },\r\n};\r\n\r\nexport const StyledModal = styled(Modal)<{\r\n isFullScreen: boolean;\r\n animationOptions: animationOptions;\r\n}>`\r\n &.ReactModal__Content {\r\n opacity: ${(props) => (props.animationOptions.animateModal ? 0 : 1)};\r\n transform: translate(\r\n ${(props) => props.animationOptions.translateX},\r\n ${(props) => props.animationOptions.translateY}\r\n );\r\n }\r\n &.ReactModal__Content--after-open {\r\n opacity: 1;\r\n transform: translate(0, 0);\r\n transition: transform 0.3s ease-out, opacity 0.3s ease-out;\r\n -webkit-overflow-scrolling: 'touch';\r\n }\r\n &.ReactModal__Content--before-close {\r\n opacity: ${(props) => (props.animationOptions.animateModal ? 0 : 1)};\r\n transform: translate(\r\n ${(props) => props.animationOptions.translateX},\r\n ${(props) => props.animationOptions.translateY}\r\n );\r\n transition: transform 0.3s ease-out, opacity 0.3s ease-out;\r\n }\r\n\r\n background-color: white;\r\n border-radius: 0;\r\n border-top: 5px solid ${(props) => props.theme.primaryDarker};\r\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\r\n margin: 10px;\r\n outline: none;\r\n z-index: 1060;\r\n width: auto;\r\n @media (min-width: 768px) {\r\n width: 600px;\r\n margin: 30px auto;\r\n }\r\n\r\n .header-container {\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n padding: 15px;\r\n }\r\n\r\n .media-query-width {\r\n width: 100%;\r\n @media (min-width: 768px) {\r\n padding: ${(props) =>\r\n props.isFullScreen ? '50px 15px 40px 15px' : '15px'};\r\n margin-left: auto;\r\n margin-right: auto;\r\n\r\n width: 750px;\r\n }\r\n @media (min-width: 992px) {\r\n width: 970px;\r\n }\r\n @media (min-width: 1200px) {\r\n width: 1170px;\r\n }\r\n @media (min-width: 1440px) {\r\n width: 1380px;\r\n }\r\n }\r\n`;\r\n\r\nexport interface StyledHeaderProps {\r\n closeButtonShowName: boolean;\r\n}\r\n\r\nexport const StyledHeader = styled.div<{ cssData: StyledHeaderProps }>`\r\n border-bottom: 1px solid lightgrey;\r\n display: flex;\r\n font-size: 24px;\r\n font-weight: 700;\r\n justify-content: space-between;\r\n line-height: ${(props) =>\r\n props.cssData.closeButtonShowName ? '48px' : '32px'};\r\n button {\r\n margin-left: 20px;\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nexport const StyledContent = styled.div`\r\n padding: 15px;\r\n`;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Button, ButtonStyle } from '../Button';\r\nimport {\r\n defaultStyleOverrides,\r\n defaultStyleOVerridesFullscreen,\r\n StyledContent,\r\n StyledHeader,\r\n StyledModal,\r\n} from './styles';\r\n\r\nexport enum DialogAnimation {\r\n NONE = 1,\r\n FROMLEFT = 2,\r\n FROMTOP = 3,\r\n}\r\n\r\nexport type animationOptions = {\r\n animateModal: boolean;\r\n durationMs: number;\r\n translateY: string;\r\n translateX: string;\r\n};\r\n\r\nfunction getAnimationOptions(\r\n animation: DialogAnimation | undefined\r\n): animationOptions {\r\n const options = {\r\n animateModal: true,\r\n durationMs: 300,\r\n translateY: '0',\r\n translateX: '0',\r\n };\r\n\r\n switch (animation) {\r\n case DialogAnimation.FROMLEFT:\r\n options.translateX = '-25%';\r\n break;\r\n case DialogAnimation.FROMTOP:\r\n options.translateY = '-25%';\r\n break;\r\n case DialogAnimation.NONE:\r\n options.animateModal = false;\r\n options.durationMs = 0;\r\n break;\r\n default:\r\n options.translateY = '-25%';\r\n }\r\n\r\n return options;\r\n}\r\n\r\nfunction useWindowWidth() {\r\n const [width, setWidth] = useState(window.innerWidth);\r\n\r\n useEffect(() => {\r\n const handleResize = () => setWidth(window.innerWidth);\r\n window.addEventListener('resize', handleResize);\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n });\r\n\r\n return width;\r\n}\r\n\r\nexport interface DialogProps {\r\n /**\r\n * Sets animation to modal.\r\n */\r\n animation?: DialogAnimation;\r\n /**\r\n * Provide custom className to be applied to dialog (placed on modal not overlay).\r\n */\r\n className?: string;\r\n /**\r\n * Label to be displayed next to close button.\r\n */\r\n closeButtonLabel?: string;\r\n /**\r\n * Overrides header with custom content.\r\n */\r\n header?: React.ReactNode;\r\n isFullScreen?: boolean;\r\n /**\r\n * Callback to act on close request.\r\n */\r\n onRequestClose?(\r\n event:\r\n | React.MouseEvent\r\n | React.KeyboardEvent\r\n ): void;\r\n style?: ReactModal.Styles;\r\n /**\r\n * Title to be displayed in header. Won't work if header is overridden.\r\n */\r\n title?: string;\r\n isOpen?: boolean;\r\n children?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Dialog component to overlay content above the page. Dialog will keep components mounted between open/closes.\r\n */\r\nexport const Dialog: React.FC = ({\r\n animation,\r\n className,\r\n isOpen = false,\r\n isFullScreen = false,\r\n ...props\r\n}) => {\r\n const animationOptions = getAnimationOptions(animation);\r\n const windowWidth = useWindowWidth();\r\n const allowCloseButtonName = isFullScreen && windowWidth > 767;\r\n const closeButtonShowName =\r\n allowCloseButtonName && props.closeButtonLabel !== undefined;\r\n\r\n return (\r\n \r\n
\r\n {props.header ? (\r\n props.header\r\n ) : (\r\n \r\n \r\n {props.title}\r\n \r\n {allowCloseButtonName\r\n ? props.closeButtonLabel\r\n : undefined}\r\n \r\n
\r\n \r\n )}\r\n \r\n {props.children}\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n","export function getRootElement(): HTMLElement {\r\n const rootElement = document.getElementById('root');\r\n if (rootElement != null && document.body.contains(rootElement)) {\r\n return rootElement;\r\n }\r\n\r\n return document.body;\r\n}\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\ninterface SvgSpinnerProps extends React.HTMLAttributes {\r\n size?: string;\r\n animationDuration: number;\r\n}\r\n\r\nconst SvgSpinner: React.FC = (props) => {\r\n const {\r\n animationDuration,\r\n children,\r\n className,\r\n size = '120px',\r\n ...PassedThroughProps\r\n } = { ...props };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {children &&
{children}
}\r\n \r\n );\r\n};\r\n\r\ninterface StyledLoaderProps {\r\n animationDuration: number;\r\n size: string;\r\n}\r\n\r\nconst StyledLoader = styled.div`\r\n @keyframes pdash {\r\n 0% {\r\n stroke-dashoffset: 155;\r\n }\r\n\r\n 50% {\r\n stroke-dashoffset: 39;\r\n transform: rotate(135deg);\r\n }\r\n\r\n to {\r\n stroke-dashoffset: 155;\r\n transform: rotate(1turn);\r\n }\r\n }\r\n\r\n @keyframes rotate360deg {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n\r\n to {\r\n transform: rotate(1turn);\r\n }\r\n }\r\n\r\n align-items: center;\r\n display: inline-flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n\r\n div {\r\n display: flex;\r\n }\r\n\r\n svg {\r\n animation-name: rotate360deg;\r\n animation-duration: ${(props) => props.animationDuration}s;\r\n animation-timing-function: linear;\r\n animation-iteration-count: infinite;\r\n display: flex;\r\n height: ${(props) => props.size};\r\n justify-content: center;\r\n text-align: center;\r\n width: ${(props) => props.size};\r\n\r\n circle:first-child {\r\n stroke-dasharray: 190;\r\n stroke: ${(props) => props.theme.primaryLighter};\r\n stroke-width: 9px;\r\n fill: none;\r\n }\r\n\r\n circle:not(:first-child) {\r\n animation-name: pdash;\r\n animation-duration: ${(props) => props.animationDuration}s;\r\n animation-timing-function: ease-in-out;\r\n animation-iteration-count: infinite;\r\n stroke-dasharray: 155;\r\n stroke-dashoffset: 39;\r\n transform-origin: center;\r\n stroke: ${(props) => props.theme.primary};\r\n stroke-width: 9px;\r\n fill: none;\r\n }\r\n }\r\n`;\r\n\r\nexport { SvgSpinner };\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { SpinnerType } from './spinner';\r\n\r\ninterface CssCircleSpinnerProps {\r\n /**\r\n * Set the animation duration of the spinning effect\r\n */\r\n animationDuration: number;\r\n /**\r\n * Provide custom styling to be applied to the spinner.\r\n * Lower is faster.\r\n */\r\n className?: string;\r\n size?: string;\r\n children?: React.ReactNode;\r\n type?: SpinnerType;\r\n /**\r\n * Thickness of the secondary spinner. No-op for primary.\r\n */\r\n thickness?: string;\r\n}\r\n\r\nexport const CssCircleSpinner: React.FC = (props) => {\r\n const {\r\n animationDuration,\r\n children,\r\n className,\r\n size = '10em',\r\n thickness = '1px',\r\n ...PassedThroughProps\r\n } = { ...props };\r\n\r\n return (\r\n \r\n
\r\n {children &&
{children}
}\r\n \r\n );\r\n};\r\n\r\ninterface StyledSpinnerProps {\r\n thickness: string;\r\n animationDuration: number;\r\n size: string;\r\n}\r\n\r\nconst StyledSpinner = styled.div`\r\n align-items: center;\r\n display: inline-flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n\r\n > div {\r\n display: flex;\r\n }\r\n\r\n .spinner,\r\n .spinner:after {\r\n border-radius: 50%;\r\n width: ${(props) => props.size};\r\n height: ${(props) => props.size};\r\n }\r\n .spinner {\r\n font-size: 10px;\r\n position: relative;\r\n text-indent: -9999em;\r\n border-top: ${(props) => props.thickness} solid\r\n ${(props) => props.theme.primaryLighter};\r\n border-right: ${(props) => props.thickness} solid\r\n ${(props) => props.theme.primaryLighter};\r\n border-bottom: ${(props) => props.thickness} solid\r\n ${(props) => props.theme.primaryLighter};\r\n border-left: ${(props) => props.thickness} solid\r\n ${(props) => props.theme.primary};\r\n transform: translateZ(0);\r\n animation: load8 ${(props) => props.animationDuration}s infinite linear;\r\n }\r\n @-webkit-keyframes load8 {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n @keyframes load8 {\r\n 0% {\r\n -webkit-transform: rotate(0deg);\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n -webkit-transform: rotate(360deg);\r\n transform: rotate(360deg);\r\n }\r\n }\r\n`;\r\n","import React from 'react';\r\nimport { SvgSpinner } from './unifySpinner';\r\nimport { CssCircleSpinner } from './cssCircleSpinner';\r\n\r\nexport enum SpinnerType {\r\n PRIMARY = 1,\r\n SECONDARY = 2,\r\n}\r\n\r\nexport interface SpinnerProps {\r\n /**\r\n * Set the animation duration of the spinning effect\r\n */\r\n animationDuration?: number;\r\n /**\r\n * Provide custom styling to be applied to the spinner.\r\n * Lower is faster.\r\n */\r\n className?: string;\r\n size?: string;\r\n children?: React.ReactNode;\r\n type?: SpinnerType;\r\n /**\r\n * Thickness of the secondary spinner. No-op for primary.\r\n */\r\n thickness?: string;\r\n}\r\n\r\n/**\r\n * Spinner component to indicate a loading or suspended state.\r\n * Comes in two flavors; svg base (primary) and css based (secondary).\r\n */\r\nexport const Spinner: React.FC<\r\n SpinnerProps &\r\n (React.HTMLAttributes | Record)\r\n> = ({\r\n className,\r\n thickness = '1.5em',\r\n animationDuration = 2,\r\n type = SpinnerType.PRIMARY,\r\n ...rest\r\n}) => {\r\n let spinner: JSX.Element;\r\n switch (type) {\r\n case SpinnerType.SECONDARY:\r\n spinner = (\r\n \r\n {rest.children}\r\n \r\n );\r\n break;\r\n case SpinnerType.PRIMARY:\r\n default:\r\n spinner = (\r\n \r\n {rest.children}\r\n \r\n );\r\n }\r\n\r\n return spinner;\r\n};\r\n","import Modal from 'react-modal';\r\nimport styled from 'styled-components';\r\n\r\nexport const StyledModal = styled(Modal)`\r\n position: fixed;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n outline: none;\r\n`;\r\n\r\nexport const StyledContent = styled.div`\r\n padding: 10px;\r\n overflow: hidden;\r\n max-height: 80vh;\r\n`;\r\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '